在ColdFusion模型胶水控制器中包含UDF/CFC的最佳方式是什么?

在ColdFusion模型胶水控制器中包含UDF/CFC的最佳方式是什么?,coldfusion,controller,user-defined-functions,coldfusion-9,model-glue,Coldfusion,Controller,User Defined Functions,Coldfusion 9,Model Glue,我有一些常见的UDF和CFC,我想让我的所有控制器都可以使用。我用的是模型胶水3。我想到了几种方法: 创建一个基本控制器,该控制器对UDF具有,并实例化CFC。所有其他控制器从该控制器继承 将所有UDF转换为CFC,并使用ColdSpring.xml将CFC转换为bean。然后使用ModelGlue.xml中的bean属性将其提供给控制器 将UDF和CFC存储在helpers文件夹中,并使用helpers作用域访问它们。但是,这看起来像是供视图而不是控制器使用的 创建一个全局onRequestS

我有一些常见的UDF和CFC,我想让我的所有控制器都可以使用。我用的是模型胶水3。我想到了几种方法:

  • 创建一个基本控制器,该控制器对UDF具有
    ,并实例化CFC。所有其他控制器从该控制器继承
  • 将所有UDF转换为CFC,并使用
    ColdSpring.xml
    将CFC转换为bean。然后使用
    ModelGlue.xml
    中的
    bean
    属性将其提供给控制器
  • 将UDF和CFC存储在helpers文件夹中,并使用helpers作用域访问它们。但是,这看起来像是供视图而不是控制器使用的
  • 创建一个全局
    onRequestStart
    ,它将实例化CFC并将它们存储在
    事件
    对象中。然后,控制器将通过直接从
    事件
    对象中抓取CFC来访问CFC

  • 我的问题是,大多数人使用什么方法使所有控制器都可以使用一组通用的UDF和CFC?

    我会使用上面的选项2

    对于那些需要helper方法的对象,我将使用DI将helper对象注入其中。这将更加灵活

    我不喜欢所有辅助对象都使用基础对象的想法。原因如下:

  • 如果以后你想把助手分成多个CFC怎么办?你不能。根据您拥有的帮助函数的数量以及它可以扩展到的数量,这可能会使您的对象变得丑陋。如果有一天你有50个助手函数呢。你真的希望你的控制器有50个额外的方法,这些方法与他们的主要关注点无关

  • 关注点的分离。控制器应该担心成为控制器。它们应该加载额外的函数,以便知道如何格式化字符串。应该由StringHelper或其他人处理


  • 另外两个选择听起来不太好。Helpers的范围是什么?

    Model Glue 3引入了一个Helpers文件夹。可以使用
    helpers.udfName.functionName
    全局访问您放入的任何UDF或CFC,框架处理实例化和缓存。官方文档中有一部分是关于它的:那么,这似乎是一个很好的方法,框架开发人员打算让您使用它。如果你是问,那么你必须对使用它有所保留。那会是什么呢?似乎在helpers中,dev的意思是“查看helpers”。我不太确定在控制器中使用它是否是一种好的做法。它在文档中说:“Model Glue 3通过为它所谓的“助手”创建支持来解决这个问题“。助手是用户定义函数的库或方法的CFC。通过将这些文件放置在正确的位置。Model Glue 3将自动加载它们,并使它们可以通过新的帮助器范围访问***此作用域可用于控制器和文件视图***“。所以看起来应该没问题。哦,很好,我错过了那一行。谢谢!“最好”?这是主观的。当然每个开发人员都会有自己的偏好。