Есть ли способ в PHP5 разрешить определенному классу или набору классов вызывать определенную функцию? Например, допустим, у меня есть три класса («Foo», «Bar» и «Baz»), все с похожими методами, и я хочу, чтобы Bar имел возможность вызвать Foo::foo()
, но запретить Baz возможность совершить этот вызов :PHP5: ограничить доступ к функции определенным классам
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
или подобных модификаторов не поможет; однако методы не обязательно статичны (я сделал их здесь для простоты примера).
Не разработчик C++, но после прочтения (кратко) о классах друзей это похоже на то, что я ищу. Удручает, что нет эквивалента PHP. – Tim