PHP 快速導覽 - Trait 機制之更改權限

使用特徵機制 (trait) 的類別 (class) 可更改方法 (method) 的權限,也可替方法取別名 (alias) 。



舉例如下
<?php
trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}

class Demo1 {
    use HelloWorld { 
        sayHello as protected; 
    }
}

$d1 = new Demo1();
echo $d1->sayHello();

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class12.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


use 後利用大括弧,然後利用關鍵字 as 更改權限
use HelloWorld { 
    sayHello as protected; 
}


由於 sayHello 被改成 protected ,因此執行會發生錯誤訊息



另外可在權限關鍵字之後加上別名,例如
<?php
trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}

class Demo2 {
    use HelloWorld { 
        sayHello as private myPrivateHello; 
    }
}

$d2 = new Demo2();
echo $d2->sayHello();

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class13.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


此例執行結果如下



此例 myPrivateHello()private 的方法,而 sayHello() 的權限不變,仍是 public 的方法。


中英文術語對照
特徵機制trait
類別class
方法method
別名alias


您可以繼續參考
類別與物件


相關目錄
回 PHP 快速導覽
回 PHP 教材
回首頁


參考資料
http://www.php.net/manual/en/language.oop5.traits.php

沒有留言: