Lucee/Coldfusion 中的全局函数

Global functions in Lucee/Coldfusion

我正在尝试在 Lucee 中创建全局函数。我已按照 here 的说明进行操作并使其 "Kind of" 正常工作。在 Application.cfc 中,我放置了以下代码:

public void function onRequest() {
    URL.IsInternalUser = function() { return (SESSION.user.ID ?: 0); };
}

这在某些情况下似乎工作正常,但如果我们需要在包含未重新定义函数的 Application.cfc 的子目录中访问此函数,则会出错,提示函数没有'不存在。

我试图实现的最终目标是拥有一个包含多个用户定义函数的 cfc 文件,然后让它们在整个应用程序中都可以访问,而无需一遍又一遍地重新定义。

有没有更好的方法来完成我们想要的?我问这个是因为在我之前在评论部分引用的页面上有一句话:

I concur. Wouldn't surprise me to see it somewhere else in the future.

What I like about Railo's method is that it is completely sandboxed. Host A's tags & functions libraries never cross/conflict with Host B's libraries unless they're put into the global server folders. It's the same way for the virtual file system too and pretty much everything else (datasources, etc).

它特别提到 Railo 有一种创建 UDF 的方法,但我在任何地方都找不到这方面的任何文档。由于我们使用的是 Railo 的一个分支 Lucee,我认为它必须具有 Railo 用于创建 UDF 的功能。希望读到这篇文章的人能帮助我并指出正确的方向。

Railo/Lucee支持自定义函数。您可以在网站的 /WEB-INF/{railo|lucee}/library/function/ 中声明它们。将函数保存在 .cfm 文件中,并将文件命名为与函数相同的名称。服务器需要在创建新功能后重新启动。 Here is Railo's blog post about it.

A​​dobe ColdFusion 不支持此 AFAIK。因此,您必须将函数存储在此处的 SERVER 范围内。