zoukankan      html  css  js  c++  java
  • trait

    简单的来说就是定义一块变量和函数,你想用的时候用use去使用它就use它一下。

    它的用法很深,但是这里不做深究,为什么呢?一些东西你用不到,即使你现在记住它也没有什么意义不是吗?

    倒不如把自己遇到的、不会的东西记住了,这样才会切实的改变自己的生活啊。

    其实生活也是这样,你要做的就是不断尝试,尝试途中遇到了问题,从书本上寻找解决方法。

    1. 目的

    php5.4开始引入trait,其目的就是在于减少代码的重复,增加代码的复用性。

    2. 使用场景

    试想这样一种情况,当有一个方法需要在很多的类中使用时,该怎么处理? 
    通常一般的处理方式会是,写一个基础类,在基类中实现这个方法,然后所有类都继承这个基类。
    
    这是一种处理方法,但不是最好的处理方式。通常采用继承的情况是:几个类具有很大的相似性。比如人作为一个基类,学生、工人、等继承“人”这个基类来扩展。
    
    由此,trait的作用就出来了,trait 可以在多个类中使用。
    --------------------- 
    作者:lemony_liu 
    来源:CSDN 
    原文:https://blog.csdn.net/lemony521/article/details/78322652 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    3. 例子

    <?php
    trait ezcReflectionReturnInfo {
        function getReturnType() { /*1*/ }
        function getReturnDescription() { /*2*/ }
    }
    
    class ezcReflectionMethod extends ReflectionMethod {
        use ezcReflectionReturnInfo;
        /* ... */
    }
    
    class ezcReflectionFunction extends ReflectionFunction {
        use ezcReflectionReturnInfo;
        /* ... */
    }
    ?>
    --------------------- 
    作者:lemony_liu 
    来源:CSDN 
    原文:https://blog.csdn.net/lemony521/article/details/78322652 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    4. 优先级

    <?php
    trait HelloWorld {
        public function sayHello() {
            echo 'Hello World!';
        }
    }
    
    class TheWorldIsNotEnough {
        use HelloWorld;
        public function sayHello() {
            echo 'Hello Universe!';
        }
    }
    
    $o = new TheWorldIsNotEnough();
    $o->sayHello();//输出是 Hello Universe!
    ?>
    --------------------- 
    作者:lemony_liu 
    来源:CSDN 
    原文:https://blog.csdn.net/lemony521/article/details/78322652 
    版权声明:本文为博主原创文章,转载请附上博文链接!
  • 相关阅读:
    实践详细篇-Windows下使用Caffe训练自己的Caffemodel数据集并进行图像分类
    实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集
    实践详细篇-Windows下使用VS2015编译安装Caffe环境(CPU ONLY)
    Linux上rpm实战搭建FTP服务器
    Idea打包Maven项目
    修改Idea默认的全局设置,如Maven等
    IntelliJ IDEA 项目结构旁边出现 0%classes,0% lines covered
    Idea中JDK为1.8,还提示Diamond types are not supported at this language level
    如何避免在父类转换到子类时发生java.lang.ClassCastException
    HashMap常用方法总结
  • 原文地址:https://www.cnblogs.com/cjjjj/p/10439126.html
Copyright © 2011-2022 走看看