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保持原样访问。