Correction status:Uncorrected
Teacher's comments:
作业内容:写一个trait实例,实现代码复用。
实例代码如下:
<?php /** * 5月7日作业内容:写一个trait实例,实现代码复用 */ if (!class_exists('Person')) { class Person { protected $name; public function __construct($name='小明') { $this->name = $name; } public function study($course='php') { return $this->name .'在学习'.$course; } } } if (!trait_exists('Course')) { trait Course { //trait中可以有属性 public $friend = '小华'; public function sport($name='踢足球') { //trait可以访问父类中的属性 $this->name.'和'.$this->friend.'在学习'.$name; //$this->name是指父类中的小明 //$this->friend是指trait类中的小华 } public function hobby($name) { return $this->name.'爱好'.$name; } //和父类同名的方法 public function study($course = 'java') { return $this->name.'在学习'.$course; } } } //有一个父类,还有一个trait类 class Student extends Person { //导入trait use Course; } //再创建一个Worker类 if (!class_exists('Worker')) { class Worker { use Course; private $name; public function __construct($name) { $this->name = $name; } public function __get($name) { return $this->$name; } } } //实例化Student $student = new Student(); //因为父类与trait中分别有同名的study()方法,子类调用study()方法时,会优先调用trait中的study()方法 echo $student->study().'<br>'; //调用trait类中的hobby()方法 echo $student->hobby('踢足球').'<br>'; //再实例化一个Worker对象 $worker = new Worker('老王'); echo $worker->name.'<br>'; //调用trait类中的hobby()方法,实现hobby()方法的复用 echo $worker->hobby('下象棋');
点击 "运行实例" 按钮查看在线实例
实现效果: