對於依賴注入 我現在的理解是把一個方法當成一個變量放進另一個方法的形參里
<?php class Factory { public static function getDb(){ return new Db(); } } class Db { public static function query($sql){ echo $sql; } public static function querys($sql){ echo $sql."s"; } } class example { private $_db; function getList(){ $this->_db->query("123");//這里具體sql語句就省略不寫了 } //從外部注入db連接 function setDb($connection){ $this->_db = $connection; } } //調用 $example = new example(); $example->setDb(Factory::getDb());//注入db連接 $example->getList();
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
簡單點
<?php class email { public static function sendemail(){ echo "發送郵件"; } } class sms { public static function sendsms(){ echo "發送短信"; } } class example { private $_send; function setSend($send_function){ $this->_send = $send_function; } } $example = new example(); $example->setSend(sms::sendsms());
example好比注冊的類,注冊成功后想發送短信就
$example = new example(); $example->setSend(sms::sendsms());
想發送郵件就
$example = new example(); $example->setSend(email::sendemail());