【问题标题】:What is the best way of including a UDF/CFC in a ColdFusion Model-Glue controller?在 ColdFusion Model-Glue 控制器中包含 UDF/CFC 的最佳方式是什么?
【发布时间】:2011-09-19 04:49:57
【问题描述】:

我想将一些常见的 UDF 和 CFC 提供给我的所有控制器。我正在使用 Model-Glue 3。我想到了几种方法:

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

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

【问题讨论】:

  • “最佳”?那是主观的。当然,每个开发者都会有自己的偏好。

标签: coldfusion controller user-defined-functions coldfusion-9 model-glue


【解决方案1】:

我会使用上面的选项 2。

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

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

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

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

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

【讨论】:

  • Model Glue 3 引入了一个 helpers 文件夹。您放入其中的任何 UDF 或 CFC 都可以使用 helpers.udfName.functionName 全局访问,并且框架会处理实例化和缓存。官方文档有一个部分:docs.model-glue.com/wiki/HowTos/HowToUseHelpers#Helpers
  • 嗯,那么这似乎是一个不错的方法,也是框架开发人员打算供您使用的方法。如果您要问,那么您必须对使用它有所保留。那会是什么?
  • 似乎对于助手来说,开发人员的意思是“查看助手”。我不太确定在控制器中使用它是否是一种好习惯。
  • 好吧,它在文档中说:“Model-Glue 3 通过创建对所谓的“助手”的支持来解决这个问题。助手是用户定义的函数库或方法的 CFC。通过放置这些文件在正确的位置。Model-Glue 3 将自动加载它们并通过新的帮助程序范围使它们可访问。***此范围可用于控制器和视图文件。***"。所以看起来应该没问题。
  • 哦,太好了,我错过了那行。谢谢!
猜你喜欢
  • 2011-06-18
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多