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

  • 相关阅读:
    VS2010 创建 windows service 程序
    应用程序 调用 webservice
    管理随笔-组织无全面系统目标和规划
    笔记1——自写综保模块非语言实现方式
    测试模型V模型和W模型
    常用研发模型
    测试方法分类
    初识测试
    IntelliJ IDEA使用快捷键生成各种for循环。增强for循环等等
    java之jdbc数据库连接
  • 原文地址:https://www.cnblogs.com/liushannet/p/2959098.html
Copyright © 2011-2022 走看看