亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

面向對象 (十)traits

標簽:
PHP
作用:解决代码复用问题,解决单一继承问题

与普通类的异同
    相同点
        trait 能够像普通的类一样定义属性,方法(包含抽象的、静态的、抽象的)
        trait 引入到基类里面,其子类里面也能访问trait里面的属性和方法。
    不用点
        trait不用实例化就能访问定义的普通方法以及属性。
        trait里面不能定义构造函数。

细节
    Trait中的方法或属性会覆盖 基类中的同名的方法或属性,而本类会覆盖Trait中同名的属性或方法
    一个类可以组合多个Trait,通过逗号相隔
    解决不同trait同名冲突,使用别名
demo10.php
<?php

/** trait的使用
 * Desc:
 * User: zyy
 * Date: 2019-12-09
 * Time: 上午 0:07
 */

Trait TraitOne {

    public $propertyOne = 'argumentOne';

    public function sayHello()
    {
        return 'My trait one';
    }

}


Trait TraitTwo {
    public function sayHello()
    {
        return 'My Trait Two';
    }
}

class MyClass {

    use TraitOne, TraitTwo {

        TraitTwo::sayHello insteadof TraitOne;  //指定要使用的trait

        Traittwo::sayHello as twoSayHello; //同方法名的trait设置别名

    }

    public function traitMethodValue()
    {
        return $this->twoSayHello();   //调用trait别名方法
    }
}

$myClass = new MyClass();
echo $myClass->twoSayHello();

class MyClassSon extends MYClass {

}

$myClass = new MyClassSon();
echo $myClass->twoSayHello(); //traits方法可以被继承

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消