特定のクラスまたはクラスのセットのみが特定の関数を呼び出すことを PHP5 に許可する方法はありますか? たとえば、3 つのクラス (「Foo」、「Bar」、および「Baz」) があり、すべて同様の名前のメソッドがあり、Bar が呼び出しできるようにしたいFoo::foo()
が、Baz がその呼び出しを行う機能を拒否するとします。
class Foo {
static function foo() { print "foo"; }
}
class Bar {
static function bar() { Foo::foo(); print "bar"; } // Should work
}
class Baz {
static function baz() { Foo::foo; print "baz"; } // Should fail
}
Foo::foo(); // Should also fail
Foo、Bar、および Baz の間に必ずしも継承があるとは限らないため、protected
または同様の修飾子を使用しても役に立ちません。ただし、メソッドは必ずしも静的ではありません (例を簡単にするために、ここではそのようにしています)。