サマリー:<?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)建學生類 使用構造方法實現(xiàn)依賴主入 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/>'; // 使用普通方法實現(xiàn)依賴注入 class Students { // 使用普通方法實現(xiàn)依賴注入 public function MyCourse(Course $course) { return '我學習了'.$course->Mysql().'課程'; } } // 實例化普通方法的學生類 $student1 = new Students(); print_r($student1->MyCourse($course));
添削の先生:天蓬老師添削時間:2019-04-22 09:53:25
先生のまとめ:面向對象編程的本質是通過多個對象之間的相互調用實現(xiàn)功能, 而對象的實例化過程, 如果在另一個對象內部完成, 會造成這個對象嚴重依賴另一個對象的實現(xiàn), 這種現(xiàn)象叫耦合, 為了解決這個問題, 將對象的創(chuàng)建過程前移,放在對象的外部完成,再通過傳參的方式注入到另一個對象內部...