PHP5:限制对某些类的函数访问

Tim*_*Tim 4 php oop access-modifiers restriction

PHP5中是否有一种方法只允许某个类或一组类调用特定的函数?例如,假设我有三个类("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
Run Code Online (Sandbox Code Playgroud)

在Foo,Bar和Baz之间不一定存在继承,因此使用protected或类似的修饰符将无济于事; 然而,这些方法不一定是静态的(为了简化示例,我在这里做了它们).

Pau*_*xon 7

没有语言功能可以给你这种行为,听起来你想模仿像C++朋友类这样的东西?

但是,在foo()方法中,您可以使用debug_backtrace来查找调用者是谁,如果不想要,则抛出异常!