依赖注入小案例,【外部实例化的优势】

原创 2019-02-15 10:33:00 309
摘要:<?php/** * 图书 author * 分类 kind */class Book{ private $author=null; private $kind=null; public function set($name,$fenLei) { $this->author=$name; $this->kind=$fenLei; return

<?php


/**

 * 图书 author

 * 分类 kind

 */

class Book

{

private $author=null;

private $kind=null;



public function set($name,$fenLei)

{

$this->author=$name;

$this->kind=$fenLei;


return '作者:'.$this->author.'<hr>'."分类:".$this->kind;

}


}



//1. 构造方法实现依赖注入


class Chuban

{

//接受初始化赋值

private $book = null;


public function __construct(Book $Book)

{

$this->book = $Book;

}

// 对外调用方法

public function show($name,$fenlei)

{

return $this->book->set($name,$fenlei);


}



}


$book=new book();

// echo $book->set('诸葛','三国');

$chuban1=new Chuban($book);

echo '***方式一***<br><br>';

echo $chuban1->show('诸葛','三国');


//2.用普通方式实现依赖注入

class Chuban2

{

private $book = null;


public function  setDefalut(Book $Book)

{

$this->book = $Book;


}


public function show($name,$fenlei)

{ $this->setDefalut();

return $this->book->set($name,$fenlei);


}

}

echo '<br>***方式二***<br><br>';

$book=new book();

//疑问1;下面这行代码传入的是book对象,但是没用构造方法初始化赋值调用

$chuban2=new Chuban($book);

//疑问2;下面这行没用构造方法初始化赋值,直接调用show方法可以正常得到结果。

echo $chuban2->show('诸葛','三国');


//依赖注入的优势

//在外部实例化,避免重复new 新的对象,更易后期维护代码


批改老师:韦小宝批改时间:2019-02-15 13:04:39
老师总结:写的很不错 就是要利用学习到的知识来进行小练习的练习这样才能快速的掌握!

发布手记

热门词条