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;
  • 相关阅读:
    【dp】P1982 小朋友的数字
    NOIp2017囤题计划
    Java语言编写计算器(简单的计算器)
    关于建立Android工程R文件丢失的问题
    读《黑客与画家》
    格式化输出%、基本运算符
    常量、变量;基本数据类型;input()、if、while、break、continue
    初遇Linux
    MVC5+EF6 入门完整教程10 数据查询更新
    Razor语法和Razor引擎大全
  • 原文地址:https://www.cnblogs.com/isuben/p/5529878.html
Copyright © 2011-2022 走看看