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

首頁 > 語言 > PHP > 正文

PHP實(shí)現(xiàn)多繼承的trait語法的介紹(代碼示例)

2024-09-04 11:43:55
字體:
供稿:網(wǎng)友

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于PHP實(shí)現(xiàn)多繼承的trait語法的介紹(代碼示例),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

PHP沒有多繼承的特性。即使是一門支持多繼承的編程語言,我們也很少會(huì)使用這個(gè)特性。在大多數(shù)人看來,多繼承不是一種好的設(shè)計(jì)方法。

但是開發(fā)中用到多繼承該怎么辦呢?

下面介紹一下使用"trait"來實(shí)現(xiàn)php中多繼承的問題。

自PHP5.4開始,php實(shí)現(xiàn)了代碼復(fù)用的方法"trait"語法。

Trait是為PHP的單繼承語言而準(zhǔn)備的一種代碼復(fù)用機(jī)制。為了減少單繼承的限制,是開發(fā)在不同結(jié)構(gòu)層次上去復(fù)用method,Trait 和 Class 組合的語義定義了一種減少?gòu)?fù)雜性的方式,避免傳統(tǒng)多繼承和 Mixin 類相關(guān)典型問題。

需要注意的是,從基類繼承的成員會(huì)被 trait 插入的成員所覆蓋。優(yōu)先順序是來自當(dāng)前類的成員覆蓋了 trait 的方法,而 trait 則覆蓋了被繼承的方法。

先來個(gè)例子:

  1. trait TestOne{ 
  2.  
  3.     public function test() 
  4.  
  5.     { 
  6.  
  7.         echo "This is trait one <br/>"
  8.  
  9.     } 
  10.  
  11.  
  12. trait TestTwo{ 
  13.  
  14.     public function test() 
  15.  
  16.     { 
  17.  
  18.         echo "This is trait two <br/>"
  19.  
  20.     } 
  21.  
  22.     public function testTwoDemo() 
  23.  
  24.     { 
  25.  
  26.         echo "This is trait two_1"
  27.  
  28.     } 
  29.  
  30.  
  31. class BasicTest{ 
  32.  
  33.     public function test(){ 
  34.  
  35.         echo "hello world/n"
  36.  
  37.     } 
  38.  
  39.  
  40. class MyCode extends BasicTest{ 
  41.  
  42.     //如果單純的直接引入,兩個(gè)類中出現(xiàn)相同的方法php會(huì)報(bào)出錯(cuò) 
  43.  
  44.     //Trait method test has not been applied, because there are collisions with other trait  
  45.  
  46.     //methods on MyCode  
  47.  
  48.     //use TestOne,TestTwo; 
  49.  
  50.     //怎么處理上面所出現(xiàn)的錯(cuò)誤呢,我們只需使用insteadof關(guān)鍵字來解決方法的沖突 
  51.  
  52.     use TestOne,TestTwo{ 
  53.  
  54.         TestTwo::test insteadof TestOne; 
  55.  
  56.     } 
  57. //Vevb.com 
  58.  
  59. $test = new MyCode(); 
  60.  
  61. $test->test(); 
  62.  
  63. $test->testTwoDemo(); 

運(yùn)行結(jié)果:

This is trait two

This is trait two_1

以上就是PHP實(shí)現(xiàn)多繼承的trait語法的介紹(代碼示例)的詳細(xì)內(nèi)容。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丁青县| 四会市| 青铜峡市| 义马市| 临海市| 巴彦淖尔市| 肥西县| 凌源市| 府谷县| 宣汉县| 肃宁县| 即墨市| 易门县| 田阳县| 会东县| 来安县| 崇礼县| 常州市| 鸡西市| 拜泉县| 任丘市| 普格县| 万年县| 科尔| 湘潭市| 通山县| 新河县| 紫阳县| 宁安市| 永定县| 昌平区| 武强县| 阳曲县| 凌源市| 南平市| 沅江市| 建湖县| 白朗县| 湘乡市| 民乐县| 芜湖市|