我有一些通用的udf和cfc,我想让所有控制器都可以使用它们。我使用Model-Glue 3。我已经想到了几种方法:
- 创建一个具有
<cfinclude>
到udf的基本控制器,并实例化CFCs。所有其他控制器都继承自这个控制器。 - 将所有udf转换为cfc,并使用
ColdSpring.xml
将cfc转化为bean。然后使用ModelGlue.xml
中的beans
属性使其对控制器可用。 - 将udf和cfc存储在helpers文件夹中,并使用helpers作用域访问它们。然而,这看起来像是要被视图而不是控制器使用。
- 创建一个全局
onRequestStart
,它将实例化CFCs并将它们存储在event
对象中。然后控制器将通过直接从event
对象中抓取cfc来访问它们。
我的问题是,大多数人使用什么方法使所有控制器都可以使用一组通用的udf和cfc ?
我会使用上面的选项2。
对于那些需要helper方法的对象,我将使用DI向它们注入一个helper对象。这将更加灵活。
我不喜欢一个包含所有帮助器的基本对象。原因如下:
-
如果以后您想在多个cfc中分解帮助器怎么办?你不能。这取决于你有多少帮助函数以及它可以发展成多少,这可能会使你的对象变得丑陋。如果有一天你有50个辅助函数。
你真的希望你的控制器有50个与它们的主要关注点无关的额外方法吗? 关注点分离。控制者应该担心自己是控制者。它们不应该被加载额外的函数,这样它们就知道如何格式化字符串。这应该由StringHelper之类的来处理
其他两个选项听起来不太好。helper的作用域是什么?