站長資訊網
最全最豐富的資訊網站

php中trait如何使用

php中trait如何使用

1、你知道php中的trait是什么么?

它上去既像類又像接口,但其實都不是。

Trait可以看做類的部分實現,可以混入一個或多個現有的PHP類中,其作用有兩個:表明類可以做什么;提供模塊化實現。Trait是一種代碼復用技術,為PHP的單繼承限制提供了一套靈活的代碼復用機制。

2、PHP版本要求:

php5.4開始引入trait,其目的就是在于減少代碼的重復,增加代碼的復用性。

3、trait的使用場景:

試想這樣一種情況,當有一個方法需要在很多的類中使用時,該怎么處理?

通常一般的處理方式會是,寫一個基礎類,在基類中實現這個方法,然后所有類都繼承這個基類。

這是一種處理方法,但不是最好的處理方式。通常采用繼承的情況是:幾個類具有很大的相似性。比如人作為一個基類,學生、工人、等繼承“人”這個基類來擴展。

由此,trait的作用就出來了,trait 可以在多個類中使用。

4、trait如何使用:

引用PHP手冊中的例子:

例子一

<?php trait ezcReflectionReturnInfo {     function getReturnType() { /*1*/ }     function getReturnDescription() { /*2*/ } }  class ezcReflectionMethod extends ReflectionMethod {     use ezcReflectionReturnInfo;     /* ... */ }  class ezcReflectionFunction extends ReflectionFunction {     use ezcReflectionReturnInfo;     /* ... */ } ?>

1、先聲明一個trait;

2、在類中使用use將該trait引入。

是不是非常簡單(手動逃)?需要注意的是trait的優先級。

(免費學習視頻分享:php視頻教程)

5、trait的優先級

(敲黑板)從基類繼承的成員會被 trait 插入的成員所覆蓋。優先順序是來自當前類的成員覆蓋了 trait 的方法,而 trait 則覆蓋了被繼承的方法。

優先級:自身方法>trait的方法>繼承的方法(就是這樣子的。)

看例子

<?php trait HelloWorld {     public function sayHello() {         echo 'Hello World!';     } }  class TheWorldIsNotEnough {     use HelloWorld;     public function sayHello() {         echo 'Hello Universe!';     } }  $o = new TheWorldIsNotEnough(); $o->sayHello();//輸出是 Hello Universe! ?>

還有一點需要注意的是:多個trait的使用。

<?php trait Hello {     public function sayHello() {         echo 'Hello ';     } }  trait World {     public function sayWorld() {         echo 'World';     } }  class MyHelloWorld {     use Hello, World;     public function sayExclamationMark() {         echo '!';     } }  $o = new MyHelloWorld(); $o->sayHello(); $o->sayWorld(); $o->sayExclamationMark(); ?>

總結:Trait是一種代碼復用技術,為PHP的單繼承限制提供了一套靈活的代碼復用機制。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
97久久超碰国产精品旧版| 午夜精品视频在线| 国产在线观看一区二区三区精品| 国产成人精品综合网站| 久久精品国产大片免费观看| 久热精品视频第一页| 亚洲午夜成人精品电影在线观看| 日韩免费一区二区三区在线| 国产老女人精品免费视频| 久99久热只有精品国产男同| 国产亚洲精品成人a v小说| 国产精品美女久久久网AV| 人妻无码精品久久亚瑟影视| 日韩高清一区二区三区不卡| 亚洲AV综合永久无码精品天堂| 亚洲精品在线播放| 正在播放国产精品放孕妇| 98精品全国免费观看视频| 99re6热视频精品免费观看| 久久人人爽人人精品视频| 亚洲AV蜜桃永久无码精品| 精品人成电影在线观看| 日韩精品一区二区三区中文版| 日韩免费一区二区三区在线播放| 日韩国产精品无码一区二区三区| 日韩日韩日韩手机看片自拍| 日韩精品电影一区亚洲| 日韩精品无码免费视频| 免费观看四虎精品国产永久| 日韩精品无码久久一区二区三| 亚洲国产日韩在线观频| 日韩精品无码免费专区网站| 中文精品一卡2卡3卡4卡| 99视频精品全部在线观看| 国产精品一国产AV麻豆| 久久精品99国产精品日本| 久久精品99国产精品日本| 99re这里有免费视频精品| 亚洲国产美女精品久久| 久久青青成人亚洲精品| 久久国产精品一国产精品|