博主信息
博文 49
粉丝 0
评论 1
访问量 55940
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
trait 类的实现代码复用---2018年 05月08日
失去过去的博客
原创
1133人浏览过

trait类简单的案例

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/5/8 0008
 * Time: 10:23
 *      trait 是什么
 * 1.trait是为了php单继承语言设计的代码复用机制
 * 2.之前可以通过函数或类来实现代码复用
 * 3.trait可以简单的理解为一个类的方法集合 工作在子类与父类之间  权重在子类和父类之间 同名方法优先级别是子类 trait类父类
 * 4.不仅仅支持方法集合 还支持 抽象类和静态类
 * 5.当前类会覆盖trait类 trait会覆盖同类名成员
 * 6.trait不是类 不能实例化(抽象类和接口也不能实例化)
 *
 */
//创建父类
class Books
{
  
    protected $bookname;
    public function __construct($bookname='php')
    {
        $this->bookname = $bookname;
   
    }
    public function reading($who){

            return $who.'在图书馆,正在看'.$this->bookname.'这本书';
    }
}
//创建trait类
trait Course
{
    private $name = '张畅';
    private $name1='庐阳';
    public  function palaygame(){
        return $this->name.'正在上体育课';

    }
//    public function reading($who = 'lizhi'){
//      return $who.'看电影';
//    }
    abstract static function dowork();
}
trait Lisen
{
    //在所有的trait类中不允许有同名的属性名称 目前版本还没有处理同名机制
    private $name2 = '刘丽婵';
//    public function reading(){
//      return $this->name2.'正在锻炼英语听力能力。';
//    }
}
//创建子类
class student extends Books
{
    //支持同时导入多个trait类
    use Course,Lisen{
        //在两个trait中有两个同名的方法好会产生冲突 所以采用insteadof(传递) 把方法指向某个trait中的方法
        //在另外trait中命名新的方法名称 用于访问
//        Course::reading insteadof Lisen;
//        Lisen::reading as myreading;
    }
    //在子类中必须实现在trait类中声明的抽象静态类
    public static function dowork($name)
    {
     return $name.':洗洗睡吧 明天还要上班';
    }
//    public function reading($who='我')
//    {
//        return $who.'正在不知疲倦的coding';
//    }
}
//实例化 student
$student = new student();
//调用方法
echo $student->reading('冰刺');
//调用trait中重名的方法
//echo $student->myreading();
//调用静态方法
echo $student::dowork('小李');
echo student::dowork('老刘');
//调用trait类中的方法
echo $student->palaygame();

运行实例 »

点击 "运行实例" 按钮查看在线实例


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学