在PHP中代碼只能單繼承,為了實(shí)現(xiàn)類代碼的復(fù)用因此實(shí)現(xiàn)了trait施戴,trait類與普通class不同它自身無(wú)法實(shí)例化纸俭,只能通過(guò)use在class中引用trait皇耗,然后這個(gè)類就能使用trait中的方法。
使用中遇到的一些問(wèn)題
你想自定義自己類中方法的權(quán)限而不是使用原來(lái)trait的方法權(quán)限
使用as來(lái)修改權(quán)限
類中的方法發(fā)生沖突
類中的方法有優(yōu)先級(jí): 本類中的方法 > trait的方法 > 繼承的類中的方法
- 如果同名的話優(yōu)先級(jí)高的會(huì)覆蓋優(yōu)先級(jí)低的揍很,因此如果需要使用需要修改方法的名稱
同樣使用as郎楼,但如果也想修改權(quán)限則權(quán)限放在要修改的名稱前面
- 兩個(gè)類中的方法名相同,使用其中一個(gè)不使用另外一個(gè)
使用B中的smallTalk方法替換A中的smallTalk方法窒悔, 使用A的bigTalk替換B中的bigTalk
多使用Trait來(lái)實(shí)現(xiàn)代碼復(fù)用呜袁, 能實(shí)現(xiàn)更為完善的面向?qū)ο蟮拇a。