国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP之認(rèn)識(shí)(二)關(guān)于Traits的用法詳解

2024-05-05 00:08:17
字體:
供稿:網(wǎng)友

PHP是單繼承的語言,在PHP 5.4 Traits出現(xiàn)之前,PHP的類無法同時(shí)從兩個(gè)基類繼承屬性或方法。Traits的出現(xiàn)解決了這一問題。

1、通過在類中使用use關(guān)鍵字聲明要組合的Trait名稱,而具體某個(gè)Trait的聲明使用trait關(guān)鍵詞,Trait不能直接實(shí)例化。具體用法:

<?phptrait Person{	public $name="person";	public function talk(){		echo "我是{$this->name}<br/>";	}}class Teacher{	public function speak(){		echo "我能教書<br/>";	}}class Student extends Teacher{	use Person;	public function study(){		echo "我需要學(xué)習(xí)<br/>";	}}$student = new Student();$student->talk();$student->speak();$student->study();?>

2、Trait、父類和本類中都存在某個(gè)同名的屬性或者方法是,會(huì)保留哪一個(gè)?

<?phptrait Person{	public $name="person";	public function talk(){		echo "我是{$this->name}<br/>";	}	 public function hello() {    echo "hello Person<br/>";  }}class Teacher{	public function talk(){		echo "我能教書<br/>";	}	 public function hello() {    echo "hello Teacher<br/>";  }}class Student extends Teacher{	use Person;	public function talk(){		echo "我需要學(xué)習(xí)<br/>";	}}$student = new Student();$student->talk();$student->hello();

結(jié)果輸出

我需要學(xué)習(xí)
hello Person

由結(jié)果可知

//trait的方法覆蓋了基類Person中的方法,所以Person中的方法hello和speak被覆蓋
//當(dāng)方法或?qū)傩酝麜r(shí),當(dāng)前類中的方法會(huì)覆蓋 trait的方法,所以此處talk會(huì)覆蓋trait中的talk

3、如果多個(gè)Trait中包含同名方法或者屬性時(shí),會(huì)怎樣呢?答案是當(dāng)組合的多個(gè)Trait包含同名屬性或者方法時(shí),需要明確聲明解決沖突,否則會(huì)產(chǎn)生一個(gè)致命錯(cuò)誤。使用insteadof和as操作符來解決沖突,insteadof是使用某個(gè)方法替代另一個(gè),而as是給方法取一個(gè)別名

以上所述是小編給大家介紹的PHP Traits的用法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識(shí)閱讀請移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 郸城县| 六安市| 林口县| 朝阳区| 西青区| 旬阳县| 安庆市| 明光市| 武威市| 马鞍山市| 新巴尔虎左旗| 通辽市| 长海县| 大洼县| 温州市| 长垣县| 云安县| 白朗县| 茂名市| 东莞市| 洪泽县| 定安县| 拉萨市| 岐山县| 宜阳县| 中山市| 黎平县| 昔阳县| 苗栗市| 梁河县| 乐东| 兖州市| 安乡县| 灵丘县| 阿巴嘎旗| 丹东市| 连城县| 红安县| 航空| 闵行区| 铜鼓县|