CFC扩展了兄弟文件夹

And*_*dir 6 coldfusion cfc application.cfc

我已经看到了在父文件夹中扩展cfcs的各种解决方案,可以访问父文件或CF管理,但我还没有看到一个可行的解决方案,无法访问父文件夹,无法在"共享"/兄弟文件夹中扩展cfc.

此解决方案需要访问父文件夹吗?(不确定这些映射是什么,但无论如何我都无法访问Application.cfc)

这个解决方案需要能够创建一个对我不起作用的application.cfc(在myApp中创建一个没有做任何事情,因为我所在的环境包含myApp中的索引页面并从那里构建...客户端永远不会直接称它为激活Application.cfc的识别

例如:

  • wwwroot的/一些/路径/对myApp /共享/ Base.cfc
  • wwwroot文件/一些/路径/对myApp /功能/ Function.cfc

我希望能够通过super和扩展从Function.cfc调用Base.cfc(包含应用程序中使用的常用方法)中的功能.

我可以访问myApp中的所有文件,但不能访问"wwwroot","some"或"path".

为了在Function.cfc中扩展Base.cfc,我必须扩展"some.path.myApp.Shared.Base"的完整路径.如果有人重命名myApp文件夹,这将导致问题,因为我必须手动编辑每个Function. cfc扩展了Base.cfc

我正在寻找它创建一个特定于应用程序的"障碍",所以如果应用程序文件夹名称更改它不会导致大规模破坏,需要我编辑所有使用Base.cfc功能的CFC文件.

由于我不能使用Base的相对路径("..Shared.Base"),我想知道是否有办法在myApp文件夹中创建一个CFC,我可以从中扩展并减轻重命名的头痛,如果它是发生或给它一个通用名称,如"myApp"并从那里扩展.(myApp.Shared.Base)

我无法访问Application.cfm,也无法访问Coldfusion管理.

Ser*_*gii 2

就我个人而言,我会采用更简单的方法:将 Base 封装到 Function 中。

看起来您想使用一组核心组件来实现某些常见功能。如果这是真的——封装就更适用了。

例如,可以动态构建对象的路径(为便于阅读而逐步进行):

<cfscript>

    path1 = GetDirectoryFromPath(cgi.SCRIPT_NAME);
    path2 = ListToArray(path1, "/");
    path3 = path2;
    path3[ArrayLen(path3)] = "shared";
    path4 = ArrayToList(path3, ".");
    path5 = ArrayToList(path2, ".");

    myBase = CreateObject("component", "#path4#.Base");

    myFunction = CreateObject("component", "#path5#.Function").init(myBase);

</cfscript>
Run Code Online (Sandbox Code Playgroud)

Function在创建函数中init

<cffunction name="init">
    <cfargument name="base">
    <cfset variables.Base = arguments.base />
    <cfreturn this />
</cffunction>
Run Code Online (Sandbox Code Playgroud)

当然,您可能有充分的理由进行扩展,但至少这种方法对父目录重命名不敏感。