中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在php項目中進行依賴注入

發布時間:2021-01-16 09:49:39 來源:億速云 閱讀:185 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關怎么在php項目中進行依賴注入,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

假設我們有一個這樣的類

class Test
{
 public function index(Demo $demo,Apple $apple){
  $demo->show();
  $apple->fun();
 }
}

如果想使用index方法我們一般需要這樣做。

$demo = new Demo();
$apple = new Apple();
$obj = new Test();
$obj->index($demo,$apple);

index方法調用起來是不是很麻煩?上面的方法還只是有兩個參數,如果有更多的參數,我們就要實例化更多的對象作為參數。如果我們引入的“依賴注入”,調用方式將會是像下面這個樣子。

$obj = new dependencyInjection();
$obj->fun("Test","index");

我們上面的例子中,Test類的index方法依賴于Demo和Apple類。

“依賴注入”就是識別出所有方法“依賴”的類,然后作為參數值“注入”到該方法中。

dependencyInjection類就是完成這個依賴注入任務的。

<?php
/**
 * Created by PhpStorm.
 * User: zhezhao
 * Date: 2016/8/10
 * Time: 19:18
 */
class dependencyInjection
{
 function fun($className,$action){
  $reflectionMethod = new ReflectionMethod($className,$action);
  $parammeters = $reflectionMethod->getParameters();
  $params = array();
  foreach ($parammeters as $item) {
   preg_match('/> ([^ ]*)/',$item,$arr);
   $class = trim($arr[1]);
   $params[] = new $class();
  }
  $instance = new $className();
  $res = call_user_func_array([$instance,$action],$params);
  return $res;
 }
}

在mvc框架中,control有時會用到多個model。如果我們使用了依賴注入類的自動加載之后,我們就可以像下面這樣使用。

public function index(UserModel $userModel,MessageModel $messageModel){
 $userList = $userModel->getAllUser();
 $messageList = $messageModel->getAllMessage();
}

關于怎么在php項目中進行依賴注入就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

根河市| 祁阳县| 玉门市| 青浦区| 福鼎市| 莱州市| 慈利县| 青田县| 苗栗县| 永兴县| 蚌埠市| 通江县| 读书| 保靖县| 南皮县| 肇庆市| 察隅县| 白城市| 连州市| 甘泉县| 台中县| 延安市| 永仁县| 璧山县| 通许县| 虹口区| 宁武县| 卓尼县| 衡山县| 东光县| 玉屏| 田林县| 余姚市| 房产| 遂平县| 镶黄旗| 谷城县| 邻水| 德清县| 湛江市| 阿瓦提县|