Correction status:qualified
Teacher's comments:trait只是提供了另一种选择罢了, 目前在开发过程 , 并未被足够重视,也未大量使用
第一个知识点 接口常量,接口常量和类常量类似,也是用const来定义,
第二个知识点 后期静态绑定(延迟静态绑定),绑定是在代码运行是发生的。静态继承的上下文环境中,调用子类重新的静态方法,使用关键词static代替self。
第三个知识点 命名空间的分级管理
第三个知识点 trait是为了解决子类只能继承一个父类单继承机制,在宿主类中引用trait类,使用use traitName就可以使用
作业一:写一个分级的命名空间, 并实现类的自动加载
'; echo text2::text().'
'; echo demo1::text().'
'; echo demo2::text().'
'; echo test1::text().'
'; echo test2::text();
点击 "运行实例" 按钮查看在线实例
作业二: 写一个trait类, 理解它的功能与使用场景
//创建一个返回姓名和年龄的trait类 trait info{ public $name; public $age; public function info(){ return '我名字是'.$this->name.',年龄是'.$this->age; } } //创建一个返回地址和电话的trait类 trait address{ public $address; public $phone; public function ainfo(){ return '我家住在'.$this->address.',我的电话是'.$this->phone; } } //创建类来继承方法,最后返回信息 class getInfo{ use info; use address; public function __construct($name,$age,$phone,$address) { $this->phone=$phone; $this->name=$name; $this->age=$age; $this->address=$address; } public function getInfo(){ return $this->info().$this->ainfo(); } } echo '
'; $info=new getInfo('小新',18,13598653541,'重庆市渝北区万寿山'); echo $info->getInfo();
点击 "运行实例" 按钮查看在线实例
Trait类是为了解决子类只能继承一个父类而生的,这样子类就可以继承多个trait类的属性和方法,更加灵活多变。