abstrak:<?php /** * 依賴注入 * Date: 2019/4/20 * Time: 20:51 */ // 創(chuàng)建課程類 class Course { // 使用單利模式 &nbs
<?php /** * 依賴注入 * Date: 2019/4/20 * Time: 20:51 */ // 創(chuàng)建課程類 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'; } } // 創(chuàng)建學(xué)生類 使用構(gòu)造方法實(shí)現(xiàn)依賴主入 class Student { private $course = null; public function __construct(Course $course) { $this->course = $course; } public function MyCourse() { return '我學(xué)習(xí)了'.$this->course->php().'課程'; } } // 實(shí)例化 課程類 $course = Course::instance(); // 實(shí)例化學(xué)生類 $student = new Student($course); // 輸出 print_r($student->MyCourse()); echo '<hr/>'; // 使用普通方法實(shí)現(xiàn)依賴注入 class Students { // 使用普通方法實(shí)現(xiàn)依賴注入 public function MyCourse(Course $course) { return '我學(xué)習(xí)了'.$course->Mysql().'課程'; } } // 實(shí)例化普通方法的學(xué)生類 $student1 = new Students(); print_r($student1->MyCourse($course));
Guru membetulkan:天蓬老師Masa pembetulan:2019-04-22 09:53:25
Rumusan guru:面向?qū)ο缶幊痰谋举|(zhì)是通過(guò)多個(gè)對(duì)象之間的相互調(diào)用實(shí)現(xiàn)功能, 而對(duì)象的實(shí)例化過(guò)程, 如果在另一個(gè)對(duì)象內(nèi)部完成, 會(huì)造成這個(gè)對(duì)象嚴(yán)重依賴另一個(gè)對(duì)象的實(shí)現(xiàn), 這種現(xiàn)象叫耦合, 為了解決這個(gè)問(wèn)題, 將對(duì)象的創(chuàng)建過(guò)程前移,放在對(duì)象的外部完成,再通過(guò)傳參的方式注入到另一個(gè)對(duì)象內(nèi)部...