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原始的非锯齿方法中的最后一个示例中,trait HelloWorld保持原样访问。