Eva\EvaEngine\Engine::cliDI PHP Method

cliDI() protected method

CLI 模式下的 DI 配置
protected cliDI ( Phalcon\DI\FactoryDefault\CLI $di )
$di Phalcon\DI\FactoryDefault\CLI
    protected function cliDI(CLI $di)
    {
        global $argv;
        $di->set('router', function () use($di, $argv) {
            $router = new CLIRouter();
            $router->setDI($di);
            return $router;
        });
        $di->set('output', function () {
            return new ConsoleOutput();
        });
        $di->set('dispatcher', function () use($di, $argv) {
            $dispatcher = new CLIDispatcher();
            $dispatcher->setDI($di);
            $moduleName = array_shift($argv);
            $taskName = array_shift($argv);
            $actionName = 'main';
            if (strpos($taskName, ':') > 0) {
                @(list($taskName, $actionName) = preg_split("/:/", $taskName));
            }
            if ($moduleName) {
                $dispatcher->setTaskName(ucwords($taskName));
                $dispatcher->setActionName($actionName);
                $dispatcher->setParams($argv);
                if ($moduleName == '_current') {
                    $_appName = ucwords($this->getAppName());
                    $dispatcher->setNamespaceName("{$_appName}\\Tasks");
                } else {
                    $dispatcher->setNamespaceName("Eva\\{$moduleName}\\Tasks");
                }
            } else {
                $dispatcher->setTaskName('Main');
                $dispatcher->setParams($argv);
                $dispatcher->setNamespaceName("Eva\\EvaEngine\\Tasks");
            }
            return $dispatcher;
        });
    }