php – 修改原有的特徵 trait 可否被造訪 (public/protected/private)
<?php trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class MyClass1 { // 修改了特徵 HelloWorld 的 sayHello() 為保護(protected) use HelloWorld { sayHello as protected; } } class MyClass2 { // 使用 HelloWorld 的 sayHello(),建立一個私有(private)的別名方法叫做 myPrivateHello use HelloWorld { sayHello as private myPrivateHello; } }
因為被修改為 protected 所以不可被外部訪問
// $MyClass1 = new MyClass1; // $MyClass1->myPrivateHello();
因為建立了私有別名,所以 sayHello() 仍然可以被訪問;myPrivateHello() 則不行。
$MyClass2 = new MyClass2; $MyClass2->sayHello(); // 可 $MyClass2->myPrivateHello(); // 不可