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

首頁 > 開發 > PHP > 正文

PHP中的traits實現代碼復用使用實例

2024-05-04 23:35:16
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP中的traits實現代碼復用使用實例,本文講解了Trait簡單使用、優先級問題、多個Trait沖突問題、as可用來修改方法訪問控制、Trait中使用Trait等內容,需要的朋友可以參考下

PHP5.4后新增traits實現代碼復用機制,Trait和類相似,但不能被實例化,無需繼承,只需要在類中使用關鍵詞use引入即可,可引入多個Traits,用','隔開。

(1)Trait簡單使用

 

 
  1. <?php 
  2.  
  3. trait A { 
  4. public $var1 = 'test1'
  5. public function test1() { 
  6. echo 'trait A::test1()'
  7.  
  8. trait B { 
  9. public $var2 = 'test2'
  10. public function test2() { 
  11. echo 'trait B::test2()'
  12.  
  13. class C { 
  14. use A,B; 
  15.  
  16. $c = new C(); 
  17. echo $c->var1; //test1 
  18. $c->test2(); //trait B::test2() 

(2)優先級問題

Trait會覆蓋繼承的方法,當前類會覆蓋Trait方法。

 

 
  1. trait A { 
  2. public $var1 = 'test'
  3. public function test() { 
  4. echo 'A::test()'
  5. public function test1() { 
  6. echo 'A::test1()'
  7.  
  8. class B { 
  9. public function test() { 
  10. echo 'B::test()'
  11. public function test1() { 
  12. echo 'B::test1()'
  13. class C extends B{ 
  14. use A; 
  15. public function test() { 
  16. echo 'c::test()'
  17.  
  18. $c = new C(); 
  19. $c->test(); //c::test() 
  20. $c->test1(); //A::test1() 

(3)多個Trait沖突問題

如果沒有解決沖突,會產生致命錯誤;

可用insteadof來明確使用沖突中哪一個方法;

可用as操作符將其中一個沖突方法另起名;

 

 
  1. trait A { 
  2. public function test() { 
  3. echo 'A::test()'
  4.  
  5. trait B { 
  6. public function test() { 
  7. echo 'B::test()'
  8.  
  9. class C { 
  10. use A,B { 
  11. B::test insteadof A; 
  12. B::test as t; 
  13.  
  14. $c = new C(); 
  15. $c->test(); //B::test() 
  16. $c->t(); //B::test() 可以用as另起名 

(4)as可用來修改方法訪問控制

 

 
  1. trait HelloWorld { 
  2. public function sayHello () { 
  3. echo 'Hello World!' ; 
  4.  
  5. // 修改 sayHello 的訪問控制 
  6. class A { 
  7. use HelloWorld { sayHello as protected; } 
  8.  
  9. // 給方法一個改變了訪問控制的別名 
  10. // 原版 sayHello 的訪問控制則沒有發生變化 
  11. class B { 
  12. use HelloWorld { sayHello as private myPrivateHello ; } 
  13.  
  14. $b = new A(); 
  15. $b->sayHello(); //Fatal error: Call to protected method A::sayHello() from context '' 

(5)Trait中使用Trait

 

 
  1. trait A { 
  2. public function test1() { 
  3. echo 'test1'
  4.  
  5. trait B { 
  6. public function test2() { 
  7. echo 'test2'
  8.  
  9. trait C { 
  10. use A,B; 
  11.  
  12. class D { 
  13. use C; 
  14.  
  15. $d = new D(); 
  16. $d->test2(); //test2 

(6)Trait支持抽象方法、支持靜態方法、不可以直接定義靜態變量,但靜態變量可被trait方法引用。

 

 
  1. trait A { 
  2. public function test1() { 
  3. static $a = 0; 
  4. $a++; 
  5. echo $a
  6.  
  7. abstract public function test2(); //可定義抽象方法 
  8.  
  9. class B { 
  10. use A; 
  11. public function test2() { 
  12.  
  13.  
  14. $b = new B(); 
  15. $b->test1(); //1 
  16. $b->test1(); //2 

(7)Trait可定義屬性,但類中不能定義同樣名稱屬性

 

 
  1. trait A { 
  2. public $test1
  3.  
  4. class B { 
  5. use A; 
  6. public $test2

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产丝袜美女| 亚洲欧美国内爽妇网| 亚洲成人网在线观看| 福利视频一区二区| 国产精品视频一区二区高潮| 亚洲欧美自拍一区| 精品久久久久久电影| 亚洲欧洲国产伦综合| 国产精品三级久久久久久电影| 日韩欧美在线字幕| 成人有码视频在线播放| 亚洲精品一区二区久| 日韩一二三在线视频播| www.亚洲人.com| 国内久久久精品| 韩国美女主播一区| 日韩av资源在线播放| 最近中文字幕mv在线一区二区三区四区| 清纯唯美日韩制服另类| 亚洲天堂男人天堂女人天堂| 久久九九热免费视频| 国产脚交av在线一区二区| 欧美老少做受xxxx高潮| 岛国av一区二区三区| 国外成人在线播放| 久久久免费观看| 亚洲自拍小视频免费观看| 欧美视频专区一二在线观看| 91产国在线观看动作片喷水| 狠狠干狠狠久久| 欧美一区二区影院| 欧美大片在线看免费观看| 国产视频精品va久久久久久| 成人午夜高潮视频| 欧美激情aaaa| 日本成熟性欧美| 亚洲free性xxxx护士白浆| 精品国产网站地址| 国产日韩欧美在线视频观看| 亚洲乱码国产乱码精品精| 欧美激情xxxxx| 欧美日韩亚洲一区二区| 国产欧美亚洲视频| 日韩高清电影好看的电视剧电影| 国产精品综合不卡av| 国产在线视频2019最新视频| 国产一区二区三区免费视频| 亚洲国产欧美在线成人app| 最近2019中文免费高清视频观看www99| 色偷偷噜噜噜亚洲男人| 国产成人av在线播放| 国产精品久久久久久久久久久不卡| 97超级碰碰人国产在线观看| 欧美日韩黄色大片| 中文字幕不卡在线视频极品| 日韩av片永久免费网站| 国产精品视频白浆免费视频| 第一福利永久视频精品| 久久国产精品久久久久久久久久| 国产精品国产三级国产aⅴ9色| 国产精品久久97| 欧美国产日韩视频| 亚洲精品一区二区久| 国产精品久久久999| 九九视频直播综合网| 日韩中文有码在线视频| 国产精品久久久久久久一区探花| 91免费看国产| 在线成人中文字幕| www.久久久久| 欧美在线视频在线播放完整版免费观看| 欧美日韩国产色| 狠狠操狠狠色综合网| 国产精品激情av在线播放| 欧美电影在线免费观看网站| 成人国产精品一区二区| 亚洲精品资源美女情侣酒店| 国产亚洲欧洲黄色| 国产精品久久久999| 97碰碰碰免费色视频| 亚洲视频第一页| 亚洲国产精品久久久久秋霞蜜臀| 91日韩在线视频| 色老头一区二区三区在线观看| 欧美国产在线电影| 91精品国产高清久久久久久久久| 国产精品人人做人人爽| 欧美中文字幕在线| 久久久91精品国产一区不卡| 欧美日韩电影在线观看| 国产日产亚洲精品| 亚洲国产日韩欧美在线99| 激情成人中文字幕| 欧美大片欧美激情性色a∨久久| 91老司机在线| 91久久久久久久| 91精品久久久久久久| 国产美女扒开尿口久久久| 国产一区二区三区丝袜| 国产午夜精品免费一区二区三区| 国产成人免费91av在线| 欧美黄色片免费观看| 日本精品免费一区二区三区| 亚洲人免费视频| 黄色一区二区在线观看| 日韩一区二区在线视频| 日韩国产精品一区| 欧美高清视频在线播放| 国产成人久久久精品一区| 亚洲午夜精品久久久久久久久久久久| 日韩69视频在线观看| 欧洲亚洲免费视频| 亚洲国产91精品在线观看| 欧美一级淫片videoshd| 国产精品国产自产拍高清av水多| 国产亚洲视频中文字幕视频| 一本色道久久综合狠狠躁篇怎么玩| 日韩中文字幕在线播放| 国产精品亚洲视频在线观看| 精品国产999| 中文字幕亚洲在线| 欧美激情18p| 久久影视电视剧凤归四时歌| 97久久久免费福利网址| 欧美极品xxxx| 91夜夜揉人人捏人人添红杏| 国产一区二区三区久久精品| 不卡av日日日| 91高清视频免费| 国内精品久久久久影院 日本资源| 韩国欧美亚洲国产| 日韩av片免费在线观看| 成人激情视频在线播放| 久久久精品2019中文字幕神马| 亚洲欧洲在线看| 日韩va亚洲va欧洲va国产| 日韩国产欧美精品在线| 日韩精品高清在线| 欧美俄罗斯性视频| 国产999精品久久久| 欧美xxxx18性欧美| 日本成人免费在线| 国产精品草莓在线免费观看| 疯狂蹂躏欧美一区二区精品| 精品久久香蕉国产线看观看亚洲| 亚洲人成绝费网站色www| 精品呦交小u女在线| 九九九久久久久久| 国产成人精品最新| 欧美激情一区二区三级高清视频| 欧美国产日韩一区二区在线观看| 2025国产精品视频| 成人激情视频小说免费下载| 这里只有精品视频在线| 97在线观看视频| 国产日韩欧美视频在线| 午夜精品久久久久久久男人的天堂| 96pao国产成视频永久免费| 久久精品2019中文字幕| 亚洲人成网站777色婷婷| 亚洲码在线观看| 欧美风情在线观看| 国产亚洲成av人片在线观看桃| 欧美激情在线一区|