PHP中关于trait使用方法的详细介绍

angryTom
发布: 2019-07-16 10:48:12
原创
2847人浏览过

本篇文章主要介绍了php中trait使用方法,个人觉得挺不错的,现在分享给大家,也给大家做个参考。一起过来看看吧。下面开始正文。

说通俗点,PHP中使用trait关键字是为了解决一个类既想集成基类的属性和方法,又想拥有别的基类的方法,而trait一般情况下是和use搭配使用的。请看下面的示例代码

<?php
    header("Content-type:text/html;charset=utf-8");
    trait Drive {                      //使用trait 创建一个基类
    public $carName = 'trait';         //定义一个变量
    public function driving() {        //定义一个方法
    echo "driving {$this->carName}<br>";
        }
    }
    class Person {                    //创建一个基类
        public function eat() {         //定义一个方法
            echo "eat<br>";
            }
    }
    class Student extends Person {    //创建一个子类继承Person类
        use Drive;                      //使用trait定义的类Drive
        public function study() {        //定义一个方法
            echo "study<br>";
            }
    }
    $student = new Student();     //创建对象
    $student->study();            //调用自己定义的方法
    $student->eat();              //调用父类方法
    $student->driving();          //调用trait定义的类Drive的方法
?>
登录后复制

运行效果图如图所示

1.png

上面的例子中,Student类通过继承Person,有了eat方法,通过组合Drive,有了driving方法和属性carName。

立即学习PHP免费学习笔记(深入)”;

品杰电子商务购物平台系统
品杰电子商务购物平台系统

网上购物商城,它属于BtoC电子商务网站平台,它能够直接绕过中介(如批发商、销售商或经销商)建立与客户的直接关系。该网站可以为用户提供商品的详细信息,用户可以在线购买商品,确定镇定的订单;同时提供关于商品或电子零销商的选择建议等等。网上购物平台使得人们的购买变的更方便、更加容易。 前台功能模块有: 热销商品 订单管理 购物车 结算中心 注册会员   用户登录

品杰电子商务购物平台系统 0
查看详情 品杰电子商务购物平台系统

如果Trait基类本类中都存在某个同名的属性或者方法,最终会保留哪一个呢?

<?php 
    header("Content-type:text/html;charset=utf-8");
        trait Drive {                  //使用trait定义一个类 
        public function hello() {    //定义一个方法
            echo "我是trait类的方法hello()<br>";
        }
        public function driving() {
            echo "我是trait类的方法driving()<br>"; //定义一个方法
        }
    }
    class Person {                //创建父类
        public function hello() {    //定义一个方法
            echo "我是父类的方法hello()<br>";
        }
        public function driving() {      //定义一个方法
            echo "我是父类的方法driving()<br>";
        }
    }
    class Student extends Person {         //创建子类继承Person类
        use Drive;                           //使用trait定义的类Drive
        public function hello() {             //定义一个方法
            echo "我是子类的方法hello()<br>";
        }
      }
    $student = new Student();            //创建对象
    $student->hello();                    //调用hello方法
    $student->driving();                  //调用deiving方法
?>
登录后复制

运行效果如图所示

1.png因此得出结论:当方法或属性同名时,当前类中的方法会覆盖 trait的 方法,在这个例子中也就是student的hello()方法覆盖了trait中的hello()方法。而 trait 的方法又覆盖了基类中的方法。在这个例子中,trait的driving()方法就是覆盖了Person类中driving()方法。

如果想了解更多php的相关知识可以到网站的php模块中去学习更多有意思的知识。

以上就是PHP中关于trait使用方法的详细介绍的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号