2011-02-04 9 views
1

ファンクションアクセスをパブリックに設定せずに継承を介してファンクションにアクセスする方法はありますか?ColdFusionでのファンクションアクセス

例:Foo.cfcがあり、Bar.cfcが拡張されています。 Foo.cfcからBar.cfc関数を呼び出す場合は、関数アクセスをpublicに設定する必要があります。

ファンクションアクセスをプライベートに設定すると、Foo.cfcからのみアクセスできます。かなり公的ではなく厳密に私的ではない「中間」アクセスレベルはありませんか?つまり、継承を介したアクセスのみを許可します...

+0

私は間違いました。ヘンリーと他の人が指摘しているように、私的な方法はアクセス可能です。誤ったアラームのために申し訳ありません。 – Mohamad

答えて

6

キーワードsuperを使用していますか? private methods should be available to sub componentsはFoo.cfcに似ています。

Foo.cfc

<cfcomponent extends="Bar"> 
    ..... 
    <cffunction name="fooMethod" access="public" ...> 
     <cfreturn super.nameOfAMethodInBarCFC() /> 
    </cffunction> 
</cfcomponent>  
+1

でも、 "nameOfAMethodInBarCFC"がBarに存在しない限り、 "super"は必要ありません。 – Henry

+0

真。私はいつもそれを使用します。それから、決して紛争はありません。ただ個人的な好み。 – Leigh

+0

あなたのソースを引用する場合+1: –

5

私は民間への機能へのアクセスを設定した場合、それはFoo.cfc

、NOT TRUEからのみアクセス可能です!private ColdFusionのアクセスレベルはJavaの場合protectedと同じですので、FooのBarのprivateメソッドを呼び出すことができます

+0

はい、同様です。しかし、同じ*ではありません。 – Leigh

1

cffunctionのaccessプロパティをpackageに設定する必要があります。これにより、コンポーネントを拡張するコンポーネントによってアクセスされるようになります。

+0

パッケージレベルのアクセスは必要ありません。プライベートメソッドはサブコンポーネントで使用できます。 – Leigh