我的应用程序的一个文件中有几个逻辑相关的 UDF。
问题是单个文件应该是 CFC 文件还是 CFM 文件?为什么?
我参考了以下几个链接,但它们更多地解释了如何实施该解决方案。我只想知道哪个更好——CFM 还是 CFC?
http://blog.adamcameron.me/2012/07/which-is-better-having-your-methods.html
感谢您的帮助。
我的应用程序的一个文件中有几个逻辑相关的 UDF。
问题是单个文件应该是 CFC 文件还是 CFM 文件?为什么?
我参考了以下几个链接,但它们更多地解释了如何实施该解决方案。我只想知道哪个更好——CFM 还是 CFC?
http://blog.adamcameron.me/2012/07/which-is-better-having-your-methods.html
感谢您的帮助。
“更好”是主观的。如果 UDF 的集合都使用您需要在它们之间传递的相同数据,那么它们可能应该被实现为 CFC,以便可以拥有有状态的对象,从而可以将数据和方法封装在它们自己的内存空间中。
如果它们是纯静态方法,那么包含的库文件可能没问题。
包含的 UDF 会单独污染变量范围,而 CFC 实例中的函数是通过一个对象变量访问的,因此更简洁一些。
如果 CFML 有静态方法的概念,我会一直使用 CFC,但由于 CFML没有静态方法,因此可以证明函数库和 CFC 的合理性。
就个人而言:我总是使用氟氯化碳。他们只是看起来更有条理,更整洁。
根据我的经验,我更喜欢 CFC。考虑到大多数 UDF 只是实用程序助手,因此它们只需要创建一次。将它们放在 CFC 中意味着您可以将它们加载到应用程序范围中并保留 CFC 实例。UDF 只会为您的应用程序创建一次。此外,您可以让其他 CFC 扩展此“实用程序”CFC,以便在那里也可以使用 UDF。
现在有了 CFM,只要您包含该模板,就会为该请求再次创建 UDF。这是对真正不需要的东西的额外处理。再加上已经提到的 UDF 污染变量范围的内容是偏爱 CFC 的另一个重要原因。