gpt4 book ai didi

coldfusion - 使用应用程序范围的 UDF 扩展 ColdFusion

转载 作者:行者123 更新时间:2023-12-02 10:21:26 25 4
gpt4 key购买 nike

我一直在探索构建 ColdFusion 应用程序的不同方法,并且正在寻找有关提供应用程序范围 UDF 的最佳方式的一些意见。

对于我的每个应用程序,我通常使用一堆并不真正属于任何特定对象的额外函数。主要是数据操作的东西。我希望这些函数在我的整个应用程序中可用,既可以在 CFM 模板中使用,也可以在应用程序实例化的 CFC 中使用。

我认为有多种方法可以实现这一目标,但它们都有各自的局限性:

  1. 在应用程序范围中实例化基本 Utils CFC。这是我最常使用的方法。所有功能都在应用程序范围内可用,但如果我从多个应用程序实例化相同的 CFC,那么它们每个都有自己的应用程序范围 - 这意味着每个应用程序都必须实例化自己的基本 Utils CFC。这没有什么问题,但感觉我对 CFC 的封装还不够好。我不热衷于在 CFC 内引用应用程序范围。

  2. 创建一个基本 Utils CFC 并使所有其他 CFC 扩展它。这工作正常,这意味着 CFC 可以直接从 CFC 的 THIS 作用域引用 Utils 函数 - 然而,这意味着 Utils 函数保留在每个 CFC 的内存中。它在概念上也不正确,因为我的其他 CFC 与 Utils CFC 没有关系。

  3. 将我的基本 Utils CFC 注入(inject)到我的其他 CFC 中。我一直在使用的另一种方法是在应用程序范围中实例化我的基本 Utils CFC,然后将其作为对象传递给其他 CFC 中的参数。这在概念上对我有用,并且对于封装也适用。就像我在 init 方法中设置数据源一样,我可以对 UDF 执行相同的操作。这与 UDF 包含在每个 CFC 中具有相同的问题。当我转储所有 CFC 时,我会多次获取每个 UDF - 然而,当我传递实例化对象时,我假设它不会占用任何额外的内存空间。如果有人能证实这一点,那会很有帮助 - 我只是假设!我对这种方法唯一真正的问题是它看起来有点复杂。

  4. 让我的应用程序 CFC 扩展我的 Utils CFC。这就是很多框架似乎所做的事情。我没有使用过这种方法,但我确信它有利有弊。

  5. CF直接在 Application.cfc 中包含来自单独模板的我的 UDF这在功能上类似于在应用程序范围中实例化。

  6. 将我的 UDF 添加到服务器的 Components.cfc理论上这是一个好主意 - 我可以维护基本 Utils 的一份副本,并确保服务器上的所有内容都可以访问它们 - 但是,如果我想跨多个服务器运行应用程序,那么它们都需要这些功能。另外,对服务器的任何更新都可能会覆盖组件。感觉就像破解了核心——我相信我们都可以从痛苦的经历中证明这一点,是很糟糕的。

所以 - 我的问题是这样的:以优雅且可重用的方式使用 UDF 扩展 CF 的最佳实践是什么?以上任何选项还是我没有想到的?

最佳答案

如果您真的关心结构并保持事物独立,甚至不要从扩展功能的单例或继承开始。相反,通过在运行时/请求上附加非组件库来扩展 ColdFusion 中的基本功能,see ColdFusion Developer's Guide 。这并不能神奇地解决所有问题,但至少这是实现通用功能的正确方法。

关于coldfusion - 使用应用程序范围的 UDF 扩展 ColdFusion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15451925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com