日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php _trait,php Trait的使用

發布時間:2024/9/27 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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