創新互聯www.cdcxhl.cn八線動態BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
成都創新互聯公司長期為1000+客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為西夏企業提供專業的成都網站設計、做網站,西夏網站改版等技術服務。擁有10年豐富建站經驗和眾多成功案例,為您定制開發。traits和interfaces的區別是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
interface我們在大型項目開發中使用,用于約束團隊協作的,interface接口規定沒有定義的函數,其他開發人員繼承,必須在按照里面的名稱進行定義,不能少一個函數也不能多一個函數,這樣就能約束和管理其他開發者。
PHP是單繼承的語言,在PHP 5.4 Traits出現之前,PHP的類無法同時從兩個基類繼承屬性或方法。php的Traits和Go語言的組合功能有點類似,
通過在類中使用use關鍵字聲明要組合的Trait名稱,而具體某個Trait的聲明使用trait關鍵詞,Trait不能直接實例化。
traits與interfaces的區別是:
1、trait
看上去更像是為了代碼的復用而寫的一個小插件,它類似于include,可以用use放在類中間,讓trait里面定義的方法作為class的一部分,本身不能直接實例化。
2、interface
里面的方法都是虛擬的,需要在繼承的時候對這些方法進行重定義。也就是說,方法是說明性質的,并沒有實際操作,而你在繼承的時候,需要實現這些方法,不然就會出錯,而且不能缺失。interface經常用于架構的時候,對一個實例所擁有的屬性和方法進行抽象定義。簡單來講類似一個協議,是老板下達的任務。你要繼承的話,必須滿足這個協議,也就是完成老板下達的任務。
<?php trait MyTrait { protected $var = 'MyTrait_var'; protected $var1 = 'MyTrait_var'; function __construct() { echo $this->var."</br>"; } function a() { echo "a"."</br>"; } } interface MyInterface { function __construct(); function b(); } abstract class MyAbstract { protected $var2 = 'MyAbstract_var'; use MyTrait; function b() { echo "b"."</br>"; } } class MyClass extends MyAbstract implements MyInterface { protected $var3 = 'MyClass_var'; function c() { echo "c"."</br>"; } } $class = new MyClass(); $class->a(); $class->b(); $class->c();
以上代碼中,MyAbstract中的function b()
也可以放在MyClass
中,或者由MyAbstract實現接口MyInterface
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯-成都網站建設公司行業資訊頻道,感謝您對創新互聯的支持。
本文標題:traits和interfaces的區別是什么-創新互聯
文章網址:http://vcdvsql.cn/article6/dcodog.html
成都網站建設公司_創新互聯,為您提供網站改版、網站維護、品牌網站建設、微信小程序、網站導航、企業建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯