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

首頁 > 語言 > PHP > 正文

PHP中的Trait 特性及作用

2024-05-04 23:44:40
字體:
來源:轉載
供稿:網友
Traits 是一種為類似 PHP 的單繼承語言而準備的代碼復用機制。Trait 為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用方法集
 

自 PHP 5.4.0 起,PHP 實現了代碼復用的一個方法,稱為 traits。

Traits 是一種為類似 PHP 的單繼承語言而準備的代碼復用機制。Trait 為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用方法集。Traits 和類組合的語義是定義了一種方式來減少復雜性,避免傳統多繼承和混入類(Mixin)相關的典型問題。

Trait 和一個類相似,但僅僅旨在用細粒度和一致的方式來組合功能。Trait 不能通過它自身來實例化。它為傳統繼承增加了水平特性的組合;也就是說,應用類的成員不需要繼承。

Trait是在PHP5.4中加入的,它既不是接口也不是類。主要是為了解決單繼承語言的限制。是PHP多重繼承的一種解決方案。例如,需要同時繼承兩個 Abstract Class, 這將會是件很麻煩的事情,Trait 就是為了解決這個問題。它能被加入到一個或多個已經存在的類中。它聲明了類能做什么(表明了其接口特性),同時也包含了具體實現(表明了其類特性)

簡單使用

首先,當然是聲明個 Trait,PHP5.4 增加了 trait 關鍵字

trait first_trait {function first_method() { /* Code Here */ }function second_method() { /* Code Here */ }}

同時,如果要在 Class 中使用該 Trait,那么使用 use 關鍵字

class first_class {// 注意這行,聲明使用 first_traituse first_trait;}$obj = new first_class();// Executing the method from trait$obj->first_method(); // valid$obj->second_method(); // valid

使用多個 Trait

在同個 Class 中可以使用多個 Trait

trait first_trait{function first_method() { echo "method"; }}trait second_trait {function second_method() { echo "method"; }}class first_class {// now using more than one traituse first_trait, second_trait;}$obj= new first_class();// Valid$obj->first_method(); // Print : method// Valid$obj->second_method(); // Print : method

Trait 之間的嵌套

同時,Trait 之間也可以相互的嵌套,例如

trait first_trait {function first_method() { echo "method"; }}trait second_trait {use first_trait;function second_method() { echo "method"; }}class first_class {// now using use second_trait;}$obj= new first_class();// Valid$obj->first_method(); // Print : method// Valid$obj->second_method(); // Print : method

Trait 的抽象方法(Abstract Method)

我們可以在 Trait 中聲明需要實現的抽象方法,這樣能使使用它的 Class 必須實現它

trait first_trait {function first_method() { echo "method"; }// 這里可以加入修飾符,說明調用類必須實現它abstract public function second_method();}class first_method {use first_trait;function second_method() {/* Code Here */}}

Trait 沖突

多個 Trait 之間同時使用難免會沖突,這需要我們去解決。PHP5.4 從語法方面帶入了相關 的關鍵字語法:insteadof 以及 as ,用法參見

trait first_trait {function first_function() { echo "From First Trait";}}trait second_trait {// 這里的名稱和 first_trait 一樣,會有沖突function first_function() { echo "From Second Trait";}}class first_class {use first_trait, second_trait {// 在這里聲明使用 first_trait 的 first_function 替換// second_trait 中聲明的first_trait::first_function insteadof second_trait;}} $obj = new first_class();// Output: From First Trait$obj->first_function();

上面就是些 Trait 比較基本的使用了,更詳細的可以參考官方手冊。這里總結下注意的幾 點:

Trait 會覆蓋調用類繼承的父類方法

Trait 無法如 Class 一樣使用 new 實例化

單個 Trait 可由多個 Trait 組成

在單個 Class 中,可以使用多個 Trait

Trait 支持修飾詞(modifiers),例如 final、static、abstract

我們能使用 insteadof 以及 as 操作符解決 Trait 之間的沖突



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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
狠狠爱在线视频一区| 久久天天躁狠狠躁夜夜爽蜜月| 日韩精品有码在线观看| 亚洲精品在线看| 日本成人精品在线| 成人国产亚洲精品a区天堂华泰| 69视频在线播放| www欧美日韩| 日韩美女av在线免费观看| 国产精品视频永久免费播放| 日本在线观看天堂男亚洲| 日韩免费av片在线观看| 91亚洲精华国产精华| 一级做a爰片久久毛片美女图片| 亚洲理论在线a中文字幕| 欧美色欧美亚洲高清在线视频| 国产激情久久久久| 久久在线免费观看视频| 欧美性xxxxx极品娇小| 亚洲成人黄色在线观看| 久久精品视频网站| 欧美日韩午夜视频在线观看| 狠狠久久五月精品中文字幕| 成人性生交大片免费看小说| 麻豆乱码国产一区二区三区| 亚洲精品黄网在线观看| 国产日韩在线一区| 国产成人精品综合久久久| 97久久久久久| 68精品国产免费久久久久久婷婷| 最新中文字幕亚洲| 最近中文字幕日韩精品| 18性欧美xxxⅹ性满足| 亚洲精品91美女久久久久久久| 日韩精品电影网| 国产精品成人免费电影| 亚洲国产成人精品一区二区| 亚洲变态欧美另类捆绑| 久久成人av网站| 日韩女优在线播放| 欧美日韩国产在线| 国产精品丝袜高跟| 国产精品久久久久久久久男| 日本高清+成人网在线观看| 91在线看www| 在线精品国产成人综合| 日韩有码片在线观看| 久久精品在线播放| 韩国国内大量揄拍精品视频| 在线播放日韩精品| 日本免费久久高清视频| 亚洲精品一区二区网址| 中文字幕亚洲第一| 国产精品久久久久av免费| 久久久精品国产网站| 色老头一区二区三区在线观看| 亚洲第一精品夜夜躁人人爽| 国产91色在线免费| 在线观看免费高清视频97| 国产91色在线|免| 亚洲精品aⅴ中文字幕乱码| 欧美日韩国产二区| 国产成人亚洲综合青青| 国产精品中文久久久久久久| 亚洲天堂av图片| 亚洲国产婷婷香蕉久久久久久| 高跟丝袜欧美一区| 伊人久久久久久久久久久久久| 欧美视频中文字幕在线| 亚洲欧美中文在线视频| 亚洲第一精品自拍| 在线看国产精品| 色在人av网站天堂精品| 色噜噜狠狠狠综合曰曰曰88av| 成人h猎奇视频网站| 国产精品久久久久久久久免费| 欧美日韩免费网站| 国产精欧美一区二区三区| 中文字幕亚洲自拍| 日韩欧美国产免费播放| 日韩av电影院| 成人黄色av免费在线观看| 色视频www在线播放国产成人| 亚洲欧美日韩国产中文| 国产精品爱啪在线线免费观看| 日韩av电影手机在线| 91av在线播放视频| 欧美日韩精品国产| 欧美成人午夜影院| 亚洲第一免费播放区| 亚洲欧洲国产一区| 欧美日韩国产在线| 国产这里只有精品| 国产午夜精品一区理论片飘花| 亚洲成人免费网站| 欧美在线播放视频| 2021久久精品国产99国产精品| 国产精品91视频| 亚洲免费视频网站| 国产女人精品视频| 国产亚洲精品久久久| 91精品久久久久久综合乱菊| 中日韩午夜理伦电影免费| 久久精品2019中文字幕| 国产视频精品自拍| 国产盗摄xxxx视频xxx69| 最近2019年中文视频免费在线观看| 97在线看免费观看视频在线观看| 日韩av网站大全| 成人综合网网址| 九九久久久久久久久激情| 热99精品里视频精品| 国产专区欧美专区| 国产精品jvid在线观看蜜臀| 久久精品91久久久久久再现| 久久久久久久久久久av| 亚洲日韩欧美视频一区| 久久久久久亚洲精品不卡| 亚洲综合精品伊人久久| 欧美性极品xxxx娇小| 亚洲一区二区三区视频| 91免费精品国偷自产在线| 欧美在线视频在线播放完整版免费观看| 亚洲人在线观看| 亚洲精品国产精品国自产在线| 国产成人精品视频在线| 欧美在线视频一区| 国产精品美女主播在线观看纯欲| 亚洲色图狂野欧美| 91最新国产视频| 亚洲一区二区三| 国产欧美中文字幕| 2020国产精品视频| 亚洲第五色综合网| 欧美国产乱视频| 成人激情视频免费在线| 欧美一级视频在线观看| 欧美成人午夜激情视频| 亚洲专区国产精品| 色妞色视频一区二区三区四区| 欧美激情精品久久久久久免费印度| 亚洲欧美在线x视频| 欧美在线视频免费观看| 国产精品中文字幕在线观看| 国产ts人妖一区二区三区| 欧美与欧洲交xxxx免费观看| 日韩精品免费电影| 国产这里只有精品| 亚洲一区二区自拍| 日韩中文字幕在线精品| 一区二区在线免费视频| 在线观看国产成人av片| 两个人的视频www国产精品| 亚洲另类欧美自拍| 成人在线中文字幕| 国产成人福利网站| 热99精品里视频精品| 日韩电影在线观看中文字幕| 国产a∨精品一区二区三区不卡| 久久手机精品视频| 欧美高跟鞋交xxxxxhd| 成人在线精品视频| 国产欧美日韩专区发布| 日韩激情视频在线|