Symfony2 -在命令行Vs浏览器上运行控制器时需要注意的事项



我即将开始编写一个Symfony2应用程序,并且我遇到了一些我必须在一段时间之前写的关于确保我编写Symfony2控制器的注意事项,因为它也需要从命令行运行。

我想确保所有的控制器都能在命令行上工作,而不是敲打出一堆控制器,似乎很高兴它们能在web浏览器上工作。

它们中的许多需要从命令行运行,例如Cron Tasks等。

(1)我的笔记告诉我插入这个在AppKernel.php:

            * This prevents a  'You cannot create a service ("request") of an inactive scope ("request")'  error
            <?php
                class AppKernel extends Kernel
                {
                    protected function initializeContainer() {
                        parent::initializeContainer();
                        if (PHP_SAPI == 'cli') {
                            $this->getContainer()->enterScope('request');
                            $this->getContainer()->set('request', new SymfonyComponentHttpFoundationRequest(), 'request');
                        }
                    }
                }
            ?>

(2)我也有一个预先编写的请求监听器,在每个请求上运行各种代码,我知道生成的变量不会在命令行上使用。

(3)我知道我的Apache配置都不会运行(因为它不在Apache内部运行),我也知道有两个php.ini文件(CLI和Apache)。

我还需要考虑什么?

与浏览器相比,命令行上还有什么不可用的?

我会考虑Console Component

Symfony 2有一个内置接口,用于创建基于CLI的命令,使整个应用程序启动,它被称为控制台组件。

使用这个来构建你的cronjob和task,你可以使用依赖注入来确保你拥有所有你需要的服务。

我敢肯定,通过一些研究,你可以弄清楚如何在必要时加载控制器-控制器转发或虚拟?

最新更新