PHP Laravel中的Trait使用方法
Trait是一種在單繼承語(yǔ)言(如PHP)中重用代碼的機(jī)制。Trait旨在通過(guò)使開(kāi)發(fā)人員能夠在生活在不同類(lèi)層次結(jié)構(gòu)中的多個(gè)獨(dú)立類(lèi)中自由地重用方法集來(lái)減少單繼承的某些限制。Traits和類(lèi)組合的語(yǔ)義以降低復(fù)雜性的方式定義,并避免了與多重繼承和Mixins相關(guān)的典型問(wèn)題。
Trait類(lèi)似于類(lèi),但僅用于以細(xì)粒度和一致的方式對(duì)功能進(jìn)行分組。無(wú)法自行實(shí)例化Trait。它是對(duì)傳統(tǒng)繼承的補(bǔ)充,可以實(shí)現(xiàn)行為的橫向組合; 也就是說(shuō),類(lèi)成員的應(yīng)用程序不需要繼承。
什么是PHP Trait?
Trait僅僅是您希望包含在另一個(gè)類(lèi)中的一組方法。與抽象類(lèi)一樣,Trait不能自己實(shí)例化。
Trait的一個(gè)例子可以是:
trait SharePost { public function share($item) { return 'share this post'; } }
然后你可以把這個(gè)trait 包含在其他類(lèi)中,就像這樣:
class Post { use SharePost; } class Comment { use SharePost; }
現(xiàn)在,如果要從這些類(lèi)中創(chuàng)建新對(duì)象,您會(huì)發(fā)現(xiàn)它們都有share()方法可用:
$post = new Post; echo $post->share(''); $comment = new Comment; echo $comment->share('');
trait 如何運(yùn)作?
從上面的示例中可以看出,盡管沒(méi)有定義該方法,但是對(duì)象Post和Comment對(duì)象都具有share()可用的方法。
Trait基本上只是一種在運(yùn)行時(shí)“復(fù)制和粘貼”代碼的方法。
這意味著Trait被復(fù)制到Post和Comment類(lèi)中,因此當(dāng)您實(shí)例化一個(gè)新實(shí)例時(shí),share()方法代碼將可用。
我經(jīng)常檢查我的代碼以及如何構(gòu)建我的代碼,以便可以快速完成未來(lái)的功能添加,并且新項(xiàng)目可以輕松擴(kuò)展以前的想法。
如何在laravel中使用trait ?
我在我的Http目錄中創(chuàng)建了一個(gè)Trait目錄,其中有一個(gè)名為的TraitBrandsTrait.php
use App\Http\Traits\BrandsTrait; class YourController extends Controller { use BrandsTrait; public function addProduct() { $brands = $this->brandsAll(); } }
這是我的BrandsTrait.php
<?php namespace App\Http\Traits;use App\Brand; trait BrandsTrait { public function brandsAll() { // 從品牌表中獲取所有品牌 $brands = Brand::all(); return $brands; } }
相關(guān)文章
ThinkPHP框架基于PDO方式連接數(shù)據(jù)庫(kù)操作示例
這篇文章主要介紹了ThinkPHP框架基于PDO方式連接數(shù)據(jù)庫(kù)操作,結(jié)合完整實(shí)例形式分析了thinkPHP使用PDO方式連接數(shù)據(jù)庫(kù)的相關(guān)配置、控制器及模板調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2018-03-03PHP將amr音頻文件轉(zhuǎn)換為mp3格式的操作細(xì)節(jié)
本文以centos服務(wù)器安裝ffmpeg為例,給大家詳細(xì)介紹PHP將amr音頻文件轉(zhuǎn)換為mp3格式的操作細(xì)節(jié),感興趣的朋友跟隨小編一起看看吧2021-07-07微信公眾平臺(tái)開(kāi)發(fā)實(shí)現(xiàn)2048游戲的方法
這篇文章主要介紹了微信公眾平臺(tái)開(kāi)發(fā)實(shí)現(xiàn)2048游戲的方法,較為詳細(xì)的講述的2048游戲的原理以及微信公眾平臺(tái)開(kāi)發(fā)2048游戲的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04php二維數(shù)組排序方法(array_multisort usort)
一維數(shù)組排序可以使用asort、ksort等一些方法進(jìn)程排序,相對(duì)來(lái)說(shuō)比較簡(jiǎn)單。二維數(shù)組的排序怎么實(shí)現(xiàn)呢?使用array_multisort和usort可以實(shí)現(xiàn)2013-12-12用PHP的socket實(shí)現(xiàn)客戶端到服務(wù)端的通信實(shí)例詳解
本篇文章主要介紹了用PHP的socket實(shí)現(xiàn)客戶端到服務(wù)端的通信實(shí)例詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02php小型企業(yè)庫(kù)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)代碼
雙專(zhuān)業(yè)畢業(yè)論文做了一個(gè)小型企業(yè)庫(kù)存管理系統(tǒng),使用PHP&mysql組合進(jìn)行開(kāi)發(fā)。頭一次開(kāi)發(fā)稍微大一點(diǎn)的東西,php也是自學(xué)的2011-05-05php微信公眾號(hào)開(kāi)發(fā)之二級(jí)菜單
這篇文章主要為大家詳細(xì)介紹了php微信公眾號(hào)開(kāi)發(fā)之二級(jí)菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10