国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

PHP 特性之 trait (二)

yeooo / 878人閱讀

摘要:命名沖突如果使用了多個(gè)并且多個(gè)中的命名有重復(fù),那么這個(gè)時(shí)候就會(huì)產(chǎn)生一個(gè)致命的錯(cuò)誤。避免的沖突引起的錯(cuò)誤。但是中的屬性跟方法,如果需要被外部的類(lèi)使用的話(huà),必須為,即使是也是不能被外部的類(lèi)所使用的。

前面我們介紹了Trait的基本使用,下面來(lái)介紹下Trait比較復(fù)雜的用法
使用多個(gè)Trait
trait Member
{
    public  function info()
    {
        echo "this is trait,";
    }

}
trait Admin
{
    public function show()
    {
        echo  "this is admin,";
    }

}


class ShowMember
{
    use Member,Admin;

}
$Member = new ShowMember();
$Member->info();
$Member->show();

直接使用,逗號(hào)隔開(kāi),以上程序?qū)?huì)輸出this is trait,this is admin,

命名沖突
如果使用了多個(gè)Trait,并且多個(gè)Trait中的命名有重復(fù),那么這個(gè)時(shí)候就會(huì)產(chǎn)生一個(gè)致命的錯(cuò)誤。為了正確的使用這些Trait,我們需要用insteadof來(lái)調(diào)用這些同名的方法。
trait Member
{
    public  function info()
    {
        echo "this is member info,";
    }

    public function show()
    {
        echo "this is member show,";

    }

}
trait Admin
{
    public function info()
    {
        echo  "this is admin info,";

    }

    public function show()
    {
        echo  "this is admin show,";
    }

}


class ShowMember
{
    use Member,Admin{
        Member::info insteadof Admin;//使用 Member 的info 方法來(lái)替代 Admin 的info方法
        Admin::show insteadof Member;//使用 Admin 的show 方法來(lái)替代 Member 的show方法
    }

}
$Member = new ShowMember();
$Member->info();
$Member->show();

以上程序?qū)?huì)輸出this is member info,this is admin show,。這個(gè)時(shí)候使用了insteadof來(lái)聲明了,我需要使用哪個(gè)Trait中的方法。避免的沖突引起的錯(cuò)誤。

Trait的抽象成員
Trait和普通的類(lèi)一樣,也是成員變量的,也可以定義抽象方法來(lái)強(qiáng)制要求。
trait Member
{
    public  function info()
    {
        echo "this is member info,";
    }

    abstract public function show();

}



class ShowMember
{
    use Member;
    public function show()
    {
        // TODO: Implement show() method.
    }


}
$Member = new ShowMember();
$Member->info();
Trait的靜態(tài)成員
Trait 同樣是可以靜態(tài)成員變量的
trait Member
{
    public  function info()
    {
        echo "this is member info,";
    }

    public static $_a = 1;
    public function show()
    {
        echo self::$_a;
    }

}



class ShowMember
{
    use Member;

}
$Member = new ShowMember();
$Member->show();//會(huì)輸出1
echo $Member::$_a;//也會(huì)輸出1
Trait的訪(fǎng)問(wèn)修飾符

上面很多例子可以看到 對(duì)Trait的方法,跟屬性都是加有 public訪(fǎng)問(wèn)修飾符,是不是就意味著,Trait也可以使用訪(fǎng)問(wèn)修飾符呢,答案是肯定的。但是Trait中的屬性跟方法,如果需要被外部的類(lèi)使用的話(huà),必須為public,即使是protected也是不能被外部的類(lèi)所使用的。那么如果我需要在外部的類(lèi)中對(duì)該方法進(jìn)行私有化怎么辦呢,下面來(lái)看一個(gè)列子

trait Member
{
    public static function show()
    {
        echo "show";
    }


}



class ShowMember
{
    use Member{
        show as private;  //將Trait中的show方法私有化
    }
    public function OutShow()
    {
        Member::show();
    }
}
$Member = new ShowMember();
$Member->OutShow();
//$Member::show(); //這個(gè)時(shí)候直接調(diào)用 show方法那么會(huì)造成致命錯(cuò)誤

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/29374.html

相關(guān)文章

  • PHP 特性 trait (一)

    摘要:在閱讀文檔的時(shí)候看到一個(gè)類(lèi)是以聲明的。是一種代碼復(fù)用技術(shù),為的單繼承限制提供了一套靈活的代碼復(fù)用機(jī)制。下面把的代碼做一個(gè)修改以上代碼會(huì)輸出。可以看出優(yōu)先級(jí)的順序?yàn)椋?dāng)前類(lèi)的優(yōu)先級(jí)基類(lèi)。 ??在閱讀laravel文檔的時(shí)候看到一個(gè)類(lèi) 是以 Trait聲明的。平時(shí)在工作中從來(lái)沒(méi)有用過(guò),于是就去看了下官方文檔。原來(lái)這個(gè)類(lèi)早在php5.4.0就有了。可惜在項(xiàng)目中從來(lái)沒(méi)有用過(guò)。 ??Trait看...

    ermaoL 評(píng)論0 收藏0
  • PHP 5.3向更高版本遷移特性

    摘要:新特性掌握的引入,可以擴(kuò)展的內(nèi)容,使在某種形式上實(shí)現(xiàn)了多重繼承,更加靈活不能被實(shí)例化示例代碼需要注意的是,的繼承順序來(lái)自當(dāng)前類(lèi)的成員覆蓋了的方法,而則覆蓋了被繼承的方法當(dāng)多個(gè)被同一個(gè)類(lèi)使用的時(shí)候,會(huì)出現(xiàn)方法沖突的情況,使用關(guān)鍵詞解決示 PHP 5.4新特性 掌握 traits trait的引入,可以擴(kuò)展class的內(nèi)容,使class在某種形式上實(shí)現(xiàn)了多重繼承,更加靈活 t...

    macg0406 評(píng)論0 收藏0
  • 關(guān)于PHPTrait特性

    摘要:關(guān)于作者程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事和前端開(kāi)發(fā),使用和,端使用混合式開(kāi)發(fā)。和組合的語(yǔ)義定義了一種減少?gòu)?fù)雜性的方式,避免傳統(tǒng)多繼承和類(lèi)相關(guān)典型問(wèn)題。它為傳統(tǒng)繼承增加了水平特性的組合也就是說(shuō),應(yīng)用的幾個(gè)之間不需要繼承。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和...

    wind3110991 評(píng)論0 收藏0
  • 【日常手記】Laravel5.3

    摘要:個(gè)人網(wǎng)站最近剛寫(xiě)了一個(gè)手機(jī)在線(xiàn)播放的電影站使用日常手記更新使用的的查詢(xún)作用域的本地作用域去自定義可復(fù)用的約束集合,方便鏈?zhǔn)秸{(diào)用什么是本地查詢(xún)作用域本地作用域允許我們定義通用的約束集合以便在應(yīng)用中復(fù)用。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:...

    kidsamong 評(píng)論0 收藏0
  • Laravel學(xué)習(xí)筆記PHP反射(Reflection) (上)

    摘要:說(shuō)明中經(jīng)常使用的反射特性來(lái)設(shè)計(jì)代碼,本文主要學(xué)習(xí)的反射特性,來(lái)提高寫(xiě)代碼時(shí)的設(shè)計(jì)質(zhì)量。提供一套檢測(cè)的兩個(gè)工具包和,類(lèi)似于探針一樣的東西來(lái)探測(cè)這些一等公民。限于篇幅,下篇再聊下反射。 說(shuō)明:Laravel中經(jīng)常使用PHP的反射特性來(lái)設(shè)計(jì)代碼,本文主要學(xué)習(xí)PHP的反射特性,來(lái)提高寫(xiě)代碼時(shí)的設(shè)計(jì)質(zhì)量。PHP提供一套檢測(cè)class, interface, trait, property, me...

    JessYanCoding 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<