Blogger Information
Blog 42
fans 0
comment 1
visits 26103
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php_trait实例_5月7日作业
日薪月e的博客
Original
674 people have browsed it

作业内容:写一个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('下象棋');

运行实例 »

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

实现效果:

000.jpg


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post