gpt4 book ai didi

coldfusion - 将应用程序的用户定义函数包含到模块中

转载 作者:行者123 更新时间:2023-12-03 16:36:54 25 4
gpt4 key购买 nike

为了简单起见,我的申请有

  • 申请
    • 包含functions.cfm
    • 缓存对象application.o
      • cfcomponent 模块,每个模块都具有创建/更新/查看模型类型
        • 每个组件都包含 functions.cfm 以便它可以使用它们,从而导致每个模块包含它们不使用的 UDF。
        • 一个例子是
          • application.o.items = new cfcs.items()
            • 包括functions.cfm
          • application.o.categories = new cfcs.categories()
            • 包括functions.cfm

结果是 10 个模块中的每一个都将整个 functions.cfm 复制到每个模块中。

我重新设计,把函数变成一个组件(它被命名为application._,它被复制到每个模块内部的variarables._中并调用函数像 _.myUDF() 应该调用 application._ 通过引用 而不是为每个组件重新创建文件中的每个函数。

这应该是执行此操作的最快速、最轻便的方法,不是吗?如果我将添加函数更改为组件 functions.cfc,除了需要重新创建组件之外,任何人都可以建议增强这种样式,或者给出为什么 include 可能更可取的原因吗?

最佳答案

您的文件 functions.cfm包含在您的 CFC 文件中,因此您可以调用 functionA()在任何这些 CFC 中。

如果转换为 functions.cfc并将该对象注入(inject)您的其他 CFC,然后您必须引用 functions其他 CFC 文件中的对象:

<cfset functions.functionA()>

所以有很多代码需要重构。

看来你应该extend您现有的氟氯化碳 functions.cfc :

<cfcomponent extends="cfc.functions">

这会使您的其他组件成为 functions.cfc子对象 ,因此继承了 functions.cfc 的内容.现在,从任何子 CFC 中,您可以调用 functionA()就像你包含 functions.cfm 时一样.

如果这更符合您的要求,并且您希望所有 CFC 都包含这些功能,您可以完全baller 移动并更新您的 CF 服务器的核心component.cfc所有 CFC 都从中扩展。此文件应在 <CF_ROOT>\WEB-INF\cftags 中找到.我过去这样做是为了向 ColdBox 应用程序添加额外的“ native ”功能。只需确保在源代码管理中跟踪这些更改即可。

关于coldfusion - 将应用程序的用户定义函数包含到模块中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51388305/

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