美文网首页PHP 面向对象详解
PHP 面向对象 (十)traits

PHP 面向对象 (十)traits

作者: 一句话儿 | 来源:发表于2020-01-12 18:37 被阅读0次
作用:解决代码复用问题,解决单一继承问题

与普通类的异同
    相同点
        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方法可以被继承

相关文章

  • PHP 面向对象 (十)traits

  • 2019-07-28

    在PHP语言的使用中,可以分别使用面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用。

  • 面向对象复习日志二:Traits

    Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集 这个断句让我断了好...

  • 2019-07-18

    在PHP语言的使用中,可以分别使用面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用,这是其它很...

  • 类的声明和语法

    1.达标和检测 学习PHP的面向对象,你需要具备PHP面向过程的相关基础,如不会,请先学习PHP基础部分. 面向对...

  • PHP技术梳理

    PHP语言: PHP基础, 数据类型, 导入文件 string array 面向对象技术, 类, 对象, 继...

  • PHP Traits

    (http://php.net/manual/en/language.oop5.traits.php#langua...

  • php 面向对象

    给自己看的 简介 PHP 对待对象的方式与引用 (references) 和句柄 (handles) 相同,即每个...

  • php面向对象

    面向对象在很多语言,如c,java,c++,c#等语言中都有,它与面向过程的区别在于:面向过程实现功能时使用几十个...

  • php面向对象

    一、类 类是一种具有统一的特征和行为的声明特征:是属性行为:方法或者函数 属性有三个标识,1、public:公共的...

网友评论

    本文标题:PHP 面向对象 (十)traits

    本文链接:https://www.haomeiwen.com/subject/ygkwactx.html