cfcomponent タグ の extends 属性内には変数を使えない!
アプリが入っているディレクトリ名'hoge'を後から自由に変更できるように
Application.cfc
<cffunction name="onApplicationStart">
<cfset Application.app_name = "hoge">
</cffunction>
なんてやって、ソース内のディレクトリ名部分を#Application.app_name#に置換しまくったんですが、継承を使用しているコンポーネントでエラーが出ちゃいました。cfcomponent タグ の extends 属性内には変数を使えないみたいです。
example.cfc
<!--- extends属性内に変数が使えない! --->
<CFCOMPONENT extends="#Application.app_name#.component.MyClass">
同じピリオド記法を使う局面でもcreateObjectや、CFOBJECT タグの component 属性なら変数が使えるのに・・・。
マッピングを使おう!
ググってみたんですが、Extend a CFC using a relative path でなにやらマッピングするといいみたいなことが書かれていたので以下のようにしてみました。
Application.cfc
<cfset This.mappings["/MyApp"]="c:\ColdFusion2018\cfusion\wwwroot\hoge">
example.cfc
<CFCOMPONENT extends="MyApp.component.MyClass">
Application.app_name は使えなかったですが、Application.cfc 内の「hoge」部分を置換すればよいだけなのでこれで解決としました。(目的は Application.cfc 以外を触らずにディレクトリ名を変更することなので)