traits和interfaces的區(qū)別是什么-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西夏企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,西夏網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

traits和interfaces的區(qū)別是什么?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

interface我們?cè)诖笮晚?xiàng)目開發(fā)中使用,用于約束團(tuán)隊(duì)協(xié)作的,interface接口規(guī)定沒有定義的函數(shù),其他開發(fā)人員繼承,必須在按照里面的名稱進(jìn)行定義,不能少一個(gè)函數(shù)也不能多一個(gè)函數(shù),這樣就能約束和管理其他開發(fā)者。

PHP是單繼承的語(yǔ)言,在PHP 5.4 Traits出現(xiàn)之前,PHP的類無(wú)法同時(shí)從兩個(gè)基類繼承屬性或方法。php的Traits和Go語(yǔ)言的組合功能有點(diǎn)類似,

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

traits與interfaces的區(qū)別是:

1、trait看上去更像是為了代碼的復(fù)用而寫的一個(gè)小插件,它類似于include,可以用use放在類中間,讓trait里面定義的方法作為class的一部分,本身不能直接實(shí)例化。

2、interface里面的方法都是虛擬的,需要在繼承的時(shí)候?qū)@些方法進(jìn)行重定義。也就是說,方法是說明性質(zhì)的,并沒有實(shí)際操作,而你在繼承的時(shí)候,需要實(shí)現(xiàn)這些方法,不然就會(huì)出錯(cuò),而且不能缺失。interface經(jīng)常用于架構(gòu)的時(shí)候,對(duì)一個(gè)實(shí)例所擁有的屬性和方法進(jìn)行抽象定義。簡(jiǎn)單來(lái)講類似一個(gè)協(xié)議,是老板下達(dá)的任務(wù)。你要繼承的話,必須滿足這個(gè)協(xié)議,也就是完成老板下達(dá)的任務(wù)。

<?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實(shí)現(xiàn)接口MyInterface

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

本文標(biāo)題:traits和interfaces的區(qū)別是什么-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://muchs.cn/article6/dcodog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站維護(hù)、品牌網(wǎng)站建設(shè)、微信小程序網(wǎng)站導(dǎo)航、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化