日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php _trait,php Trait的使用

發布時間:2024/9/27 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php _trait,php Trait的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、php中的trait是啥?

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

2、PHP版本要求:

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

3、trait的使用場景:

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

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

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

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

4、trait如何使用:

引用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的優先級。

5、trait的優先級

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

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

看例子

trait HelloWorld {public functionsayHello() {echo ‘Hello World!‘;

}

}classTheWorldIsNotEnough {useHelloWorld;public functionsayHello() {echo ‘Hello Universe!‘;

}

}$o = newTheWorldIsNotEnough();$o->sayHello();//輸出是 Hello Universe!

?>

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

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的單繼承限制提供了一套靈活的代碼復用機制。

總結

以上是生活随笔為你收集整理的php _trait,php Trait的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。