91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么在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

化德县| 同江市| 奈曼旗| 清水县| 揭阳市| 霍邱县| 衡水市| 句容市| 民乐县| 肇东市| 彭山县| 余干县| 泸水县| 鹿泉市| 抚松县| 云浮市| 吉安市| 宜州市| 阳朔县| 梁河县| 武汉市| 金乡县| 金溪县| 彝良县| 神农架林区| 天台县| 长葛市| 娄烦县| 滦南县| 通城县| 盐津县| 车致| 陵川县| 蛟河市| 山丹县| 惠东县| 安国市| 万载县| 富宁县| 临西县| 土默特左旗|