1

我有一些常见的 UDF 和 CFC,我想让我的所有控制器都可以使用它们。我正在使用 Model-Glue 3。我想到了几种方法:

  1. 创建一个具有<cfinclude>UDF 的基本控制器并实例化 CFC。所有其他控制器都继承自该控制器。
  2. 将所有 UDF 转换为 CFC,并用于ColdSpring.xml将 CFC 制成 bean。beans然后使用 中的属性使其对控制器可用ModelGlue.xml
  3. 将 UDF 和 CFC 存储在 helpers 文件夹中,并使用 helpers 范围访问它们。但是,这看起来像是打算由视图而不是控制器使用。
  4. 创建一个onRequestStart将实例化 CFC 并将它们存储在event对象中的全局变量。然后控制器将通过直接从event对象中抓取 CFC 来访问它们。

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

4

1 回答 1

3

我会使用上面的选项2。

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

我不喜欢带有所有助手的基础对象的想法。原因如下:

  1. 如果稍后您想分解多个 CFC 中的助手怎么办?你不能。根据您有多少帮助功能以及它可以发展成多少,这可能会使您的对象变得丑陋。如果有一天你有 50 个辅助函数会怎样。你真的希望你的控制器有 50 个额外的方法,这些方法与他们的主要关注点无关。

  2. 关注点分离。控制器应该担心成为控制器。他们不应该加载额外的功能,以便他们知道如何格式化字符串。这应该由 StringHelper 或其他东西处理。

其他两个选项听起来不太好。什么是 Helpers 范围?

于 2011-09-18T20:49:57.327 回答