• php traits 介绍


    php5.4新特性 traits(不知道中文翻译叫什么)

    traits 作用: 代码复用,变相实现多重继承,或者叫类的代码片段

    声明:

    trait trait_name {
        //method
        //attribute 
        //跟class类似   
    }
    

     调用:

    trait trait_name2 {//组合多个trait
        use trait_name1;
    abstract public function getWorld();//可以声明抽象方法 }
    class class_name{ use trait_name1,trait_name2;
       public function getWorld(){}//需要实现抽象方法 }

    注意:

    1. trait 不可实例化,trait 只是代码片段,当有继承时,use trait 将覆盖父类方法

    2. trait 可以声明抽象方法,静态方法等

    3. 使用 trait 之间不可有相同的方法或属性声明,出现相同使用时需处理,如下:

    <?php 
    trait A {
        public function smallTalk() {
            echo 'a';
        }
        public function bigTalk() {
            echo 'A';
        }
    }
    
    trait B {
        public function smallTalk() {
            echo 'b';
        }
        public function bigTalk() {
            echo 'B';
        }
    }
    trait C {
        public function smallTalk() {
            echo 'c';
        }
        public function bigTalk() {
            echo 'C';
        }
    }
    class Talker {
        use A, B,C {
            B::smallTalk insteadof A,C;//必须处理冲突的名,指定默认使用
            B::bigTalk insteadof A,C;//必须处理冲突的名,指定默认使用
            A::bigTalk as AbigTalk;//如果需使用其他类的方法,对方法重命名
            C::bigTalk as CbigTalk;//如果需使用其他类的方法,对方法重命名
            C::smallTalk as protected CsmallTalk;//如果需使用其他类的方法,对方法重命名,且修改方法可见性
            A::smallTalk as protected;//如果需使用其他类的方法,修改方法可见性
        }
    }
    $a=new Talker();
    $a->AbigTalk();

    4.本类声明的方法将重写父类的方法或trait的方法

    5. 不能实现接口(implements),继承(entends)等.(继承可以用类似的use 来实现)

    官方介绍:http://php.net/manual/zh/language.oop5.traits.php

  • 相关阅读:
    前端攻城狮学习笔记九:让你彻底弄清offset
    jquery在线手册
    阻止元素的默认行为
    JS三元运算符
    坐标系与基本图元(1) ~转载天行健 君子当自强而不息
    坐标系与基本图元~转载天行健 君子当自强而不息
    VS常见错误
    ZigZag Conversion
    指针转换(数组退化为指针的三种情况)
    POJ 1985
  • 原文地址:https://www.cnblogs.com/liushannet/p/2959098.html
Copyright © 2020-2023  润新知