これは非常に単純ですが、ColdFusionではそうではないようです。私はvar a = new this()
のように、それ自身の中からCFCのインスタンスを作成する必要がありますが、これは明らかに機能しません。これは許容可能であるが、getMetaData(this).fullname
から返されるクラスパスが正しくないCFC内から新しいインスタンスを作成
component {
public function subQuery (required string table) {
var classPath = getMetaData(this).fullname;
return createObject("component", classPath).init(table, this.dsn);
}
}
:それは私が次の問題の周りハックをしようとしていますので、延長されるベースがあるとしてCFC名を使用することはできません。 CFCは、my-folder
のようにハイフンで名前が付けられたフォルダ内にあり、返されるパスは、ハイフンの前にピリオドが挿入されたmy.-folder.myCFC
のようになります。明らかに、私はRegexでこの文字列を操作することができますが、それはちょうど私が下りたい道ではありません。
願っている人には、よりクリーンなアプローチがあります。ありがとうございます。
(あなたは、initの引数が供給されないエラーをしたい場合) 。これはまだ恐ろしいハックのように思えますが、私はそれ以上の選択肢はありません。助けてくれてありがとうSimon。 –
私は子供オブジェクトを呼び出そうとしたときに同様の問題を抱えていました。最終的には、あなたが特定したように、正規表現やマッピングに落ち着かなくてはならない相対パスがありました。両方とも理想的/ –