摘要:<?php /** * 依赖注入 * Date: 2019/4/20 * Time: 20:51 */ // 创建课程类 class Course { // 使用单利模式 &nbs
<?php
/**
* 依赖注入
* Date: 2019/4/20
* Time: 20:51
*/
// 创建课程类
class Course
{
// 使用单利模式
protected static $instance = null;
private function __construct(){}
private function __clone(){}
public static function instance()
{
if(is_null(static::$instance))
{
static::$instance = new static;
}
return static::$instance;
}
// PHP 课程
public function php(){
return 'PHP';
}
// 课程 Mysql
public function Mysql()
{
return 'Mysql';
}
}
// 创建学生类 使用构造方法实现依赖主入
class Student
{
private $course = null;
public function __construct(Course $course)
{
$this->course = $course;
}
public function MyCourse()
{
return '我学习了'.$this->course->php().'课程';
}
}
// 实例化 课程类
$course = Course::instance();
// 实例化学生类
$student = new Student($course);
// 输出
print_r($student->MyCourse());
echo '<hr/>';
// 使用普通方法实现依赖注入
class Students
{
// 使用普通方法实现依赖注入
public function MyCourse(Course $course)
{
return '我学习了'.$course->Mysql().'课程';
}
}
// 实例化普通方法的学生类
$student1 = new Students();
print_r($student1->MyCourse($course));
批改老师:天蓬老师批改时间:2019-04-22 09:53:25
老师总结:面向对象编程的本质是通过多个对象之间的相互调用实现功能, 而对象的实例化过程, 如果在另一个对象内部完成, 会造成这个对象严重依赖另一个对象的实现, 这种现象叫耦合, 为了解决这个问题, 将对象的创建过程前移,放在对象的外部完成,再通过传参的方式注入到另一个对象内部...