亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

分別使用構(gòu)造方法、普通方法實(shí)現(xiàn)依賴注入

??? 2019-04-20 21:05:31 299
????:<?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));


?? ???:天蓬老師?? ??:2019-04-22 09:53:25
???? ??:面向?qū)ο缶幊痰谋举|(zhì)是通過多個(gè)對(duì)象之間的相互調(diào)用實(shí)現(xiàn)功能, 而對(duì)象的實(shí)例化過程, 如果在另一個(gè)對(duì)象內(nèi)部完成, 會(huì)造成這個(gè)對(duì)象嚴(yán)重依賴另一個(gè)對(duì)象的實(shí)現(xiàn), 這種現(xiàn)象叫耦合, 為了解決這個(gè)問題, 將對(duì)象的創(chuàng)建過程前移,放在對(duì)象的外部完成,再通過傳參的方式注入到另一個(gè)對(duì)象內(nèi)部...

??? ??

?? ??