zoukankan      html  css  js  c++  java
  • PHP 通过构造器进行依赖注入 demo

    class A{
        public $b;
        public $f;
        
        function __construct( B $b , $f = 1 ){
            $this->b = $b;
            $this->f = $f;
        }
    }
    
    class B{}
    class GenClass{
        
        public function getObj( $class ,$params = [] ){
            $rel = new ReflectionClass( $class );
            $paramObjs = $rel->getConstructor()->getParameters();
            $parIns = $this->getParIns($paramObjs);
            $ret = $rel->newInstanceArgs($parIns);
            return $ret;
        }
        
        public function getParIns( $paramObjs ){
            $ret = [];
            foreach ( $paramObjs as $params){
                $dep = $params->getClass();
                if ($params->isDefaultValueAvailable()) {
                    $ret[] =  $params->getDefaultValue();
                }else{
                    $ret[] = $this->getIns( $params->name );
                }
            }
            return $ret;
        }
        
        public function getIns( $class, $param = [] ){
            return new $class();
        }
    }
    
    $s = (new GenClass())->getObj('A',[]);
    var_dump($s);
    die();
  • 相关阅读:
    MyBatis与Spring的整合
    Spring核心AOP(面向切面编程)
    Spring核心IoC(控制反转)
    动态SQL
    SQL映射文件
    初识MyBatis
    注解和反射
    Linux配置SVN和MemCached
    Java Web Day10
    Java Web Day9
  • 原文地址:https://www.cnblogs.com/glory-jzx/p/6846693.html
Copyright © 2011-2022 走看看