zoukankan      html  css  js  c++  java
  • YII服务定位器依赖注入

    <?php
    /**
     * Created by PhpStorm.
     * Date: 2016/5/25
     * Time: 18:33
     * 服务定位器依赖注入
     */
    namespace frontendcontrollers;
    
    use yii;
    use yiiwebController;
    use yiidiContainer;
    use yiidiServiceLocator;
    
    class DependencyinjectserviceController extends Controller{
        public function actionIndex()
        {
    
            Yii::$container->set('frontendcontrollersDriver','frontendcontrollersManDriver');
            $sl = new ServiceLocator();
            $sl->set('Car',[
                'class'=>'frontendcontrollersCar',
            ]);
            $car = $sl->get('Car');
            $car->run();
    
    
    
            /* 'car' =>['frontendcontrollersDriver','frontendcontrollersManDriver'];可以配置在config components中
             这时
             Yii::$app->car->run();*/
            /*板块2
             * Yii::$container->set('frontendcontrollersDriver','frontendcontrollersManDriver');
                Yii::$app->car->run();
            */
    
        }
    }
    
    interface Driver{
        public function drive();
    }
    class ManDriver implements  Driver{
        public function drive(){
            echo "I am an old man!";
        }
    }
    class Car{
        private $driver = null;
    
        public function __construct(Driver $driver)//第20行实现接口传递 ,消除强依赖
        {
            $this->driver = $driver;
        }
        public function run()
        {
            $this->driver->drive();
        }
    }

    config.php

    <?php
    
    $config = [
        'components' => [//应用组件
            'request' => [
                // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
                'cookieValidationKey' => 'fvfpjzSKyDScNsrOXvd8f8atT6CY0rVj',
            ],   
            'car' =>[
                'class'=>'frontendcontrollersCar'
            ],
        ],   
    
    ];
    
    if (!YII_ENV_TEST) {
        // configuration adjustments for 'dev' environment
        $config['bootstrap'][] = 'debug';
        $config['modules']['debug'] = [
            'class' => 'yiidebugModule',
        ];
        $config['bootstrap'][] = 'gii';
        $config['modules']['gii'] = [
            'class' => 'yiigiiModule',
        ];
    }
    
    return $config;
  • 相关阅读:
    Window下安装redis
    Redhat安装python环境(readline模块)
    Golang之hello,beego
    Golang之go 命令用法
    Golang之Mysql事务
    Golang之waitgroup用法
    记录java版本不兼容的坑,(kafka运行报错)
    位运算的技巧(有拓展的技巧)
    关于单片机软件框架的一点思考
    解决main.o(.data) type RW incompatible with bsp.o(.ARM.__AT_0x24001000) type ZI in er RW_IRAM2.(转载)
  • 原文地址:https://www.cnblogs.com/isuben/p/5529878.html
Copyright © 2011-2022 走看看