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

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號
久久精品国产91久久麻豆自制| 九九久久精品国产免费看小说| 国产精品久久久久久久久| 久久国内精品自在自线软件 | 亚洲色图国产精品| 国产亚洲精品无码成人| 久久久久国产精品三级网| 亚洲а∨天堂久久精品| 日韩中文字幕免费| 日韩精品真人荷官无码| 国产成人精品免费视频大全五级 | 免费精品一区二区三区在线观看| 91精品一区二区综合在线| 少妇人妻偷人精品无码视频新浪 | 国产精品成人免费一区二区| 国产成人精品怡红院| 亚洲欧洲精品视频在线观看| 久久影院综合精品| 久久久免费精品re6| 少妇人妻偷人精品免费视频| 久久国产三级精品| 久久精品一区二区三区四区| 国产精品免费一区二区三区四区| 亚洲欧洲成人精品香蕉网| 99精品国产在热久久| 久久亚洲AV永久无码精品| 久久精品国产精品亚洲人人| 国产免费久久精品99久久| 国产精品 猎奇 另类视频| 亚洲精品乱码久久久久久蜜桃 | 国产精品 综合 第五页| 亚洲AV永久无码精品一区二区国产| 丰满人妻熟妇乱又伦精品软件| 色婷婷久久久SWAG精品| 午夜亚洲av永久无码精品| 九九久久精品国产免费看小说| 尤物TV国产精品看片在线| 国产精品视频全国免费观看| 精品国产一区二区22| 天美传媒精品1区2区3区| 国产精品无码无片在线观看|