【后端开辟】关于PHP中依靠注入的细致引见

【后端开辟】关于PHP中依靠注入的细致引见

后端开发2019-11-09 2:5460ki4网

依靠注入道理:

依靠注入是一种许可我们从硬编码的依靠中解耦出来,从而在运行时或许编译时能够修正的软件设计形式。简而言之就是能够让我们在类的要领中越发轻易的挪用与之关联的类。

实例解说:

假设有一个如许的类:

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视频教程

以上就是关于PHP中依靠注入的细致引见的细致内容,更多请关注ki4网别的相干文章!

炫龙网络 Copyright ©  本站由阿里云强力驱动
【后端开辟】关于PHP中依靠注入的细致引见