これは非常に簡単なことのように思えますが、ColdFusion ではそうではないようです。のようにそれ自体から CFC のインスタンスを作成する必要がありますがvar a = new this()
、これは明らかに機能しません。CFC名は拡張されるベースであるため使用できないため、次の方法で問題を回避しようとしています:
component {
public function subQuery (required string table) {
var classPath = getMetaData(this).fullname;
return createObject("component", classPath).init(table, this.dsn);
}
}
これは許容できますが、返されたクラス パスgetMetaData(this).fullname
が正しくありません。CFC は、ハイフンで名前が付けられたフォルダー内にmy-folder
あり、返されるパスはmy.-folder.myCFC
、ハイフンの前にピリオドが挿入されたようになります。明らかに、この文字列を正規表現で操作できますが、それは私が行きたい道ではありません。
誰かがよりクリーンなアプローチをとることを願っています、ありがとう。