摘要:<?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
老师总结:写的很不错 就是要利用学习到的知识来进行小练习的练习这样才能快速的掌握!