Symfony2 - 在命令行和浏览器上运行控制器时要注意什么

时间:2014-05-23 19:06:21

标签: php symfony command-line-interface

我即将开始编写Symfony2应用程序,并且我已经遇到了一些注意事项,我必须写一些关于确保我编写Symfony2控制器的事项需要从命令行运行它太

我希望确保所有控制器都能在命令行上运行,而不是抨击一大堆控制器并且看起来很高兴他们在Web浏览器中工作,我希望确保所有控制器都能在命令行上运行。

其中很多都需要从命令行运行,例如Cron任务等。

(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 \Symfony\Component\HttpFoundation\Request(), 'request');
                        }
                    }

                }

            ?>

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

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

我还需要考虑什么?

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

1 个答案:

答案 0 :(得分:0)

我会考虑Console Component

Symfony 2有一个内置接口,用于创建基于CLI的命令,这些命令将引导整个应用程序,它被称为Console Component

使用此功能构建您的cronjobs和任务,您可以使用依赖注入来确保您拥有所需的所有服务。

我确定通过一些研究可以找出如何在必要时加载控制器 - 控制器转发或virtual