Есть ли способ в PHP5 разрешить только определенному классу или набору классов вызывать определенную функцию? Например, предположим, что у меня есть три класса ("Фу", "Бар" и "Баз"), все с методами с одинаковыми именами, и я хочу, чтобы Бар мог вызывать Foo::foo()
, но запрещал Базу делать этот вызов. :
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
или подобных модификаторов не поможет; однако методы не обязательно должны быть статическими (здесь я сделал их такими для простоты примера).