亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

詳解PHP神奇又有用的Trait

2024-05-05 00:07:56
字體:
來源:轉載
供稿:網友

php和java,c++一樣都是單繼承模式。但是像python,是支持多繼承(即Mixin模式)。那么如何在php中實現多繼承模式?這就需要使用trait。

trait Arrayabletrait{	public function toArray(){	}}class Model{	use Arrayabletrait;}$model = new Model();$model->toArray();

Trait使用場景

  1. 有些功能不需要類的方法屬性,但是在不同的類都有使用需求。例如上面的對象轉數組方法。這種情況可以使用一個基類定義toArray方法,則需要將這類基礎方法定義在盡可能頂層的基類當中,保證所有的類都能夠調用這個方法。
  2. 類因為某些需求,已經繼承了第三方類對象。例如第三方orm模型類。這種情況如果要給類附加一些公共的功能,除了創建一個繼承于orm模型的基類,復制一套公共功能的代碼之外,就可以使用trait。

trait使用注意

方法優先級

trait Arrayabletrait{	public function logname(){		return 'trait:'.$this->name;	}	public static function staticlog(){		return 'trait:'.self::$staticname;	}}class Obj{	protected $name = 'Obj';	public static $staticname = 'Obj';	public function logname(){		return 'obj:'.$this->name;	}}class Model extends Obj{	protected $name = 'model';	public static $staticname = 'model';	use Arrayabletrait;	public function logname(){		return 'model:'.$this->name;	}	public static function staticlog(){		return 'model:'.self::$staticname;	}}class Model2 extends Obj{	protected $name = 'model2';	public static $staticname = 'Model2';	use Arrayabletrait;}$model = new Model();$model2 = new Model2();echo $model->logname()."/n";echo $model2->logname()."/n";echo Model::staticlog()."/n";echo Model2::staticlog()."/n";

上面輸出內容分別為model:model,trait:model2,model:model,trait:model2.可以看出,trait方法優先級為 當前對象>trait>父類,以上規則同樣使用于靜態調用。

屬性定義要特別小心??!trait中可以定義屬性。但是不能和usetrait當前類定義的屬性相同,否則會報錯:define the same property。但是,如果父類使用了trait,子類定義trait中存在的屬性,則沒有問題。

trait Arrayabletrait{	public $logger='file';	public function log(){		return 'trait:'.$this->logger.$this->name;	}}class Obj{	use Arrayabletrait;	protected $name = 'Obj';}class Model extends Obj{	protected $logger = 'redis';}$model = new Model();echo $model->log()."/n";

私有屬性私有方法。triat中可以方位use類的私有屬性私有方法??!

從以上可以看出,trait本身是對類的一個擴展,在trait中使用$this ,self,static,parent都與當前類一樣,zend底層將trait代碼嵌入到類當中,相當于底層幫我們實現了代碼復制功能。

多個trait相同方法。

trait Arrayabletrait1{	public function log(){		return 'trait1:'.$this->logger.$this->name;	}	public function logname(){		return 'trait1:'.$this->name;	}}trait Arrayabletrait2{	public function log(){		return 'trait2:'.$this->logger.$this->name;	}	public function logname(){		return 'trait1:'.$this->name;	}}class Model{	public $name = 'model';	use Arrayabletrait1,Arrayabletrait2{		Arrayabletrait1::log insteadof Arrayabletrait2;		Arrayabletrait2::logname insteadof Arrayabletrait1;		Arrayabletrait2::logname as logname1;	}	protected $logger = 'redis';}$model = new Model();echo $model->log()."/n";echo $model->logname1()."/n";

多trait相同的方法,需要使用instanceof 指定使用哪個trait的方法。instanceof后面的使用的trait??梢允褂胊s設置添加方法別名(添加,原有方法還是能調用?。。?。as還可以改變方法的訪問控制

Arrayabletrait2::logname as private改為私有方法。

以上所述是小編給大家介紹的PHP神奇又有用的Trait詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情在线播放| 中文字幕视频在线免费欧美日韩综合在线看| 中文字幕在线看视频国产欧美在线看完整| 日韩视频免费观看| 国语自产偷拍精品视频偷| 久久久亚洲欧洲日产国码aⅴ| 秋霞av国产精品一区| 日韩中文第一页| 午夜精品在线观看| 精品国产一区av| 欧美一级bbbbb性bbbb喷潮片| 亚洲奶大毛多的老太婆| 日韩免费电影在线观看| 久热精品视频在线免费观看| 日韩亚洲精品视频| 国产日韩欧美日韩大片| 亚洲在线www| 91精品免费视频| 在线电影欧美日韩一区二区私密| 亚洲欧洲在线免费| 精品偷拍一区二区三区在线看| 亚洲影院在线看| 日韩精品免费一线在线观看| 欧美一级黑人aaaaaaa做受| 亚洲国产日韩一区| 国产精品久久久久久久久久久不卡| 国产美女精品视频免费观看| 亚洲图片欧洲图片av| 成人免费淫片视频软件| 日韩美女视频在线观看| 国产一区玩具在线观看| 国产精品xxx视频| 日韩小视频网址| 欧美日韩国产综合新一区| 91在线观看免费高清| 午夜精品一区二区三区视频免费看| 日韩中文在线视频| 欧美一区二区大胆人体摄影专业网站| 亚洲欧美另类人妖| 久久国产精品99国产精| 欧美中文在线免费| 欧美特级www| 45www国产精品网站| 久久精品色欧美aⅴ一区二区| 久久久久久69| 亚洲欧美日韩中文视频| 欧美一区二区大胆人体摄影专业网站| 国产精品久久久久久av福利软件| 91精品国产综合久久男男| 午夜精品美女自拍福到在线| 国产精品视频播放| 国产精品免费久久久久久| 日韩经典一区二区三区| 亚洲美女视频网| 日韩中文在线视频| 影音先锋欧美在线资源| 成人精品在线视频| 国产婷婷色综合av蜜臀av| 亚洲激情电影中文字幕| 亚洲老头老太hd| 午夜精品久久久久久久99热| 综合国产在线观看| 狠狠操狠狠色综合网| 国产丝袜一区视频在线观看| 日韩禁在线播放| 91国产中文字幕| 久久精品福利视频| 国产精品女视频| 色青青草原桃花久久综合| 日韩国产精品一区| 伊人伊成久久人综合网站| 亚洲理论电影网| 一区二区欧美久久| 久久亚洲国产精品| 亚洲乱码一区av黑人高潮| 国外视频精品毛片| 欧美剧在线观看| 国产精品青青在线观看爽香蕉| 51视频国产精品一区二区| 日本乱人伦a精品| 欧美超级乱淫片喷水| 日韩av在线播放资源| 美女撒尿一区二区三区| 日韩欧美国产黄色| 国产成人福利网站| 久久国产精品99国产精| 国产精品视频免费在线观看| 欧美另类老肥妇| 亚洲人成绝费网站色www| 欧美日韩成人网| 国产在线日韩在线| 国产精品国模在线| 国产日韩av高清| 日韩欧美成人网| 九九九久久国产免费| 国产精品日韩电影| 久久久久免费视频| 黄色精品一区二区| 国产精品91视频| 国产精品一二三视频| 国产精品人成电影在线观看| 国产z一区二区三区| 久久乐国产精品| 欧美国产亚洲视频| 高清日韩电视剧大全免费播放在线观看| 日韩精品视频三区| 中文字幕久久亚洲| 中文字幕国产精品| 国产91精品久久久久| 午夜欧美不卡精品aaaaa| 国产福利视频一区二区| 午夜精品在线观看| 欧美丰满老妇厨房牲生活| 国产视频福利一区| 色综合久综合久久综合久鬼88| 国产精品午夜国产小视频| 欧美性猛交xxx| 国产成人精品优优av| 国产精品大陆在线观看| 日韩一区二区三区国产| 欧美午夜xxx| 欧美黄色成人网| 久久免费国产精品1| 国产免费观看久久黄| 欧美激情亚洲综合一区| 亚洲日本成人女熟在线观看| 精品无人国产偷自产在线| 日韩一区二区三区国产| 91成人在线观看国产| 国产午夜精品一区理论片飘花| 综合国产在线视频| 欧美网站在线观看| 国产一区二区成人| 91成人精品网站| 亚洲激情电影中文字幕| 亚洲电影av在线| 在线丨暗呦小u女国产精品| 欧美日韩一区二区免费在线观看| 亚洲精品动漫100p| 欧美亚洲另类视频| 国产精品视频久久久| 久久精品国产欧美亚洲人人爽| 在线观看日韩专区| 91免费版网站入口| 国产一区二区三区高清在线观看| 97在线视频免费看| 日韩美女视频在线观看| 欧美中文字幕精品| 91福利视频在线观看| 久久亚洲精品视频| 一区二区三区美女xx视频| 91欧美激情另类亚洲| 国产伊人精品在线| 日韩一区二区精品视频| 欧美在线欧美在线| 亚洲精品videossex少妇| 亚洲精品一区二区久| 欧美精品成人在线| 亚洲黄色在线看| 久久69精品久久久久久久电影好| 清纯唯美亚洲综合| 亚洲人成电影网| 亚洲免费精彩视频| 日本道色综合久久影院|