




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——PHP中trait使用方法介紹PHP中trait使用方法介紹
PHP中使用trait關(guān)鍵字是為了解決一個(gè)類既想集成基類的屬性和方法,又想擁有別的基類的.方法,而trait一般處境下是和use搭配使用的。本文是我探尋整理的關(guān)于PHP中trait使用方法介紹,感興趣的摯友一起學(xué)習(xí)吧!!想了解更多相關(guān)信息請(qǐng)持續(xù)關(guān)注我們我!
?php
traitDrive
public$carName=trait;
publicfunctiondriving
echodriving$this-carName\n;
classPerson
publicfunctioneat
echoeat\n;
classStudentextendsPerson
useDrive;
publicfunctionstudy
echostudy\n;
$student=newStudent;
$student-study;
$student-eat;
$student-driving;
?
輸出結(jié)果如下:
study
eat
drivingtrait
上面的例子中,Student類通過繼承Person,有了eat方法,通過組合Drive,有了driving方法和屬性carName。
假設(shè)Trait、基類和本類中都存在某個(gè)同名的屬性或者方法,最終會(huì)留存哪一個(gè)呢?
?php
traitDrive
publicfunctionhello
echohellodrive\n;
publicfunctiondriving
echodrivingfromdrive\n;
classPerson
publicfunctionhello
echohelloperson\n;
publicfunctiondriving
echodrivingfromperson\n;
classStudentextendsPerson
useDrive;
publicfunctionhello
echohellostudent\n;
$student=newStudent;
$student-hello;
$student-driving;
?
輸出結(jié)果如下:
hellostudent
drivingfromdrive
因此得出結(jié)論:當(dāng)方法或?qū)傩酝麜r(shí),當(dāng)前類中的方法會(huì)籠罩trait的方法,而trait的方法又籠罩了基類中的方法。
假設(shè)要組合多個(gè)Trait,通過逗號(hào)分隔Trait名稱:
useTrait1,Trait2;
假設(shè)多個(gè)Trait中包含同名方法或者屬性時(shí),會(huì)怎樣呢?答案是當(dāng)組合的多個(gè)Trait包含同名屬性或者方法時(shí),需要明確聲明解決沖突,否那么會(huì)產(chǎn)生一個(gè)致命錯(cuò)誤。
?php
traitTrait1
publicfunctionhello
echoTrait1::hello\n;
publicfunctionhi
echoTrait1::hi\n;
traitTrait2
publicfunctionhello
echoTrait2::hello\n;
publicfunctionhi
echoTrait2::hi\n;
classClass1
useTrait1,Trait2;
?
輸出結(jié)果如下:
代碼如下:
PHPFatalerror:Traitmethodhellohasnotbeenapplied,becausetherearecollisionswithothertraitmethodsonClass1in~/php54/trait_3.phponline20
使用insteadof和as操作符來解決沖突,insteadof是使用某個(gè)方法替代另一個(gè),而as是給方法取一個(gè)別名,概括用法請(qǐng)看代碼:
?php
traitTrait1
publicfunctionhello
echoTrait1::hello\n;
publicfunctionhi
echoTrait1::hi\n;
traitTrait2
publicfunctionhello
echoTrait2::hello\n;
publicfunctionhi
echoTrait2::hi\n;
classClass1
useTrait1,Trait2
Trait2::helloinsteadofTrait1;
Trait1::hiinsteadofTrait2;
classClass2
useTrait1,Trait2
Trait2::helloinsteadofTrait1;
Trait1::hiinsteadofTrait2;
Trait2::hiashei;
Trait1::helloashehe;
$Obj1=newClass1;
$Obj1-hello;
$Obj1-hi;
echo\n;
$Obj2=newClass2;
$Obj2-hello;
$Obj2-hi;
$Obj2-hei;
$Obj2-hehe;
?
輸出結(jié)果如下:
Trait2::hello
Trait1::hi
Trait2::hello
Trait1::hi
Trait2::hi
Trait1::hello
as關(guān)鍵詞還有另外一個(gè)用途,那就是修改方法的訪問操縱:
Trait也能組合Trait,Trait中支持抽象方法、靜態(tài)屬性及靜態(tài)方法,測試代碼如下:
?php
traitHello
publicfunctionsayHello
echoHello\n;
traitWorld
useHello;
publicfunctionsayWorld
echoWorld\n;
abstractpublicfunctiongetWorld;
publicfunctioninc
static$c=0;
$c=$c+1;
echo$c\n;
publicstaticfunctiondoSomething
echoDoingsomething\n;
classHelloWorld
useWorld;
publicfunctiongetWorld
returngetWorld;
$Obj=newHelloWorld;
$Obj-sayHello;
$Obj-sayWorld;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年煙用改性聚丙烯絲束項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年座墊革項(xiàng)目可行性研究報(bào)告
- 2025至2030年全鋼子午胎機(jī)頭項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年感應(yīng)式IC卡讀卡器項(xiàng)目可行性研究報(bào)告
- 5 對(duì)韻歌 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語文一年級(jí)上冊(cè)統(tǒng)編版
- 照明景觀燈飾項(xiàng)目可行性研究報(bào)告
- 功能性速溶茶系列產(chǎn)品項(xiàng)目申請(qǐng)備案可行性研究報(bào)告
- 2024年教育OMO模式行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略規(guī)劃研究報(bào)告
- 2025年精密軸套類零件項(xiàng)目投資可行性研究分析報(bào)告
- 2025年高效節(jié)能燃油汽鍋爐項(xiàng)目投資可行性研究分析報(bào)告-20241226-174433
- 建筑行業(yè)材料供應(yīng)應(yīng)急預(yù)案
- 電焊工安全培訓(xùn)(超詳)課件
- 2025蛇年中小學(xué)春節(jié)寒假安全教育課件模板
- 康復(fù)護(hù)士講課課件
- 2024年學(xué)??蒲泄ぷ饔?jì)劃(6篇)
- 學(xué)校食堂廚師崗位職責(zé)
- 如何做好4S管理
- 民航客艙應(yīng)急設(shè)備
- 化工總控工培訓(xùn)
- 山西電網(wǎng)新能源場站涉網(wǎng)試驗(yàn)流程使用說明書
- 課題1 碳單質(zhì)的多樣性(第1課時(shí))課件九年級(jí)化學(xué)上冊(cè)人教版2024
評(píng)論
0/150
提交評(píng)論