phpの依存性注入コンテナ

依存性の注入は、個々のクラス間の相互依存関係を解決することです。依存性注入は、コンテナ・ストア各コンテナクラス間の依存です。

様々なPHPのフレームワークPHPのコンテナを使用するには、いくつかの依存性注入コンテナのフレームには、例えば、非常に強力で、非常に健全である:ここlaravel、yii2、簡単な依存性注入コンテナを記録するには、簡単な依存性注入コンテナでeasyswooleである、と容器は、我々のニーズを満たすことができない場合には良い参考に、我々はそれに基づいて展開することができます。

Di.phpは次の通り:

<?php
/**
 * Created by PhpStorm.
 * User: yf
 * Date: 2018/5/24
 * Time: 下午4:17
 */

namespace EasySwoole\Component;


class Di
{
    use Singleton;
    private $container = array();

    public function set($key, $obj,...$arg):void
    {
        /*
         * 注入的时候不做任何的类型检测与转换
         * 由于编程人员为问题,该注入资源并不一定会被用到
         */
        $this->container[$key] = array(
            "obj"=>$obj,
            "params"=>$arg,
        );
    }

    function delete($key):void
    {
        unset( $this->container[$key]);
    }

    function clear():void
    {
        $this->container = array();
    }

    /**
     * @param $key
     * @return null
     * @throws \Throwable
     */
    function get($key)
    {
        if(isset($this->container[$key])){
            $obj = $this->container[$key]['obj'];
            $params = $this->container[$key]['params'];
            if(is_object($obj) || is_callable($obj)){
                return $obj;
            }else if(is_string($obj) && class_exists($obj)){
                try{
                    $this->container[$key]['obj'] = new $obj(...$params);
                    return $this->container[$key]['obj'];
                }catch (\Throwable $throwable){
                    throw $throwable;
                }
            }else{
                return $obj;
            }
        }else{
            return null;
        }
    }
}

このクラスの導入は、説明Singletonシングルトン実装でありtrait、以前の記事を参照してください。

公開された48元の記事 ウォン称賛13 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_37825371/article/details/104203957