Nun scheint dies etwas sehr geradlinig zu sein, aber anscheinend nicht so in ColdFusion. Ich muss eine Instanz eines CFC in sich selbst erstellen, wie in var a = new this()
, aber das funktioniert offensichtlich nicht. Der CFC-Name kann nicht verwendet werden, da es eine Basis ist, die so erweitert werden, werde ich um das Problem ein Hack bin versucht, mit den folgenden:Erstellen einer neuen Instanz in CFC
component {
public function subQuery (required string table) {
var classPath = getMetaData(this).fullname;
return createObject("component", classPath).init(table, this.dsn);
}
}
Dies wäre akzeptabel, aber der Klassenpfad von getMetaData(this).fullname
zurückgegeben wird, ist falsch . Der CFC befindet sich in einem Ordner mit einem Namen wie in my-folder
und der zurückgegebene Pfad sieht wie my.-folder.myCFC
mit einem vor dem Bindestrich eingefügten Zeitraum aus. Natürlich könnte ich diese Saite mit einer Regex manipulieren, aber das ist einfach keine Straße, die ich hinuntergehen möchte.
Ich hoffe, jemand hat einen saubereren Ansatz, danke.
Ich hatte gehofft, dass ich hatte einige dieser in Verfahren gebaut verpassten in der Dokumentation zu tun, aber vielleicht nicht . Obwohl das immer noch wie ein schrecklicher Hack aussieht, habe ich keine bessere Option. Danke für deine Hilfe Simon. –
Ich hatte ähnliche Probleme beim Versuch, untergeordnete Objekte aufzurufen, und schließlich den relativen Pfad adressiert sie als sonst, wie Sie identifiziert haben, musste auf Regex oder Mappings zurückgreifen - beide sind nicht ideal/behindert Portabilität/Erweiterbarkeit –