PHP 更改方法可见性
示例
trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } //更改sayHello的可见性 class MyClass1 { use HelloWorld { sayHello as protected; } } //可见性已更改的别名方法 //说您好可见度未更改 class MyClass2 { use HelloWorld { sayHello as private myPrivateHello; } }
运行此示例:
(new MyClass1())->sayHello(); //致命错误:未捕获的错误:调用受保护的方法MyClass1::sayHello() (new MyClass2())->myPrivateHello(); //致命错误:未捕获的错误:调用私有方法MyClass2::myPrivateHello() (new MyClass2())->sayHello(); //你好,世界!
因此请注意,在MyClass2原始的非锯齿方法中的最后一个示例中,traitHelloWorld保持原样访问。