2

私は現在、サードパーティの 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でこのメソッドをオーバーライドする方法を知っている人はいますか?

4

2 に答える 2