zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    常见规格液晶显示器尺寸/点距/分辨率
    Disk genius(Diskgenius)修复硬盘分区表
    IIS上注册.Net
    PowerDesigner中如何导入表结构
    关于VS命名空间的引用
    启动Word时出现“复制文件或文件夹时出错"对话框?
    能够删除的安卓(Android)系统自带程序详细列表和说明
    五种方法 解决Windows最大终端连接数
    查看本机打开的端口
    RAID技术概述
  • 原文地址:https://www.cnblogs.com/liushannet/p/2959098.html
Copyright © 2011-2022 走看看