私は現在、サードパーティの CFC を拡張しようとしています。すべてうまくいき、正しく動作していますが、CFC のメソッドの 1 つをオーバーライドするようになりました (最初に拡張している理由です)。現在、サード パーティの CFC はすべてタグ ベースであり、次のように定義された「do」という名前の関数があります。
<cffunction name="do" returntype="any" access="public" output="true"
hint="I compile and execute a specific fuseaction.">
<cfargument name="action" type="string" required="true"
hint="I am the full name of the requested fuseaction (circuit.fuseaction)." />
<cfargument name="contentVariable" type="string" default=""
hint="I indicate an attributes / event scope variable in which to store the output." />
<cfargument name="returnOutput" type="boolean" default="false"
hint="I indicate whether to display output (false - default) or return the output (true)." />
<cfargument name="append" type="boolean" default="false"
hint="I indicate whether to append output (false - default) to the content variable." />
<cfargument name="passThroughReturn" type="boolean" default="false"
hint="I indicate whether to allow for a return to be passed through from an action CFC." />
現在、私の CFC はすべて cfscript (私の個人的な好みとプロジェクトのコーディング標準) です。次のように、CFC でこのメソッドをオーバーライドしようとすると:
public any function do( Required String action, String contentVariable="", boolean returnOutput=false, boolean append=false, boolean passThroughReturn=false){
次に、「do」がCFの予約語であるためと思われる関数名に関するエラーが表示されます。
メソッドの名前を変更し、マッピングするだけでこれを回避しようとしました。
this.do = variables.invokeDo;
public any function invokeDo( Required String action, String contentVariable="", boolean returnOutput=false, boolean append=false, boolean passThroughReturn=false){
これはエラーを回避しますが、myObject.do(..)
呼び出すとスーパー クラス メソッドが呼び出されるだけです。
CFscriptでこのメソッドをオーバーライドする方法を知っている人はいますか?