php – 修改原有的特徵 trait 可否被造訪 (public/protected/private)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?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 所以不可被外部訪問
1 2 3 4 |
// $MyClass1 = new MyClass1; // $MyClass1->myPrivateHello(); |
因為建立了私有別名,所以 sayHello() 仍然可以被訪問;myPrivateHello() 則不行。
1 2 3 4 5 |
$MyClass2 = new MyClass2; $MyClass2->sayHello(); // 可 $MyClass2->myPrivateHello(); // 不可 |