在Zend Framework 2中,将初始模块横幅添加到控制台应用程序非常简单。我们只需要实现getConsoleBanner
和getConsoleUsage
方法,并实现Zend\ModuleManager\Feature\ConsoleUsageProviderInterface
或ConsoleBannerProviderInterface
接口即可。这足以在通过CLI启动public/index.php
时在控制台中转储这些消息。
但在Zend Framework 3中情况并不相同。进行相同的设置并不能提供相同的结果。实际上,在控制台中,我们看到骨架应用程序的默认HTML页面与我们通过浏览器访问该页面的方式相同。在安装自定义模块之前,我们就已经看到了那个页面。此处是zend-mvc-console
模块的文件:https://zendframework.github.io/zend-mvc-console/intro/
即使按照建议安装了模块(在模块定义中添加了'Zend\Mvc\Console'
),控制台横幅也不会显示。我在方法内测试过变量转储,并能够查看数据,所以框架执行了这些方法,但在控制台中没有显示任何结果。
我也尝试了使用控制台路由和控制器。路由被找到了,控制器操作也被执行了,但是在CLI中仍然什么都没有显示。
我查看了框架的代码,似乎Zend\Mvc\Console\ResponseSender\ConsoleResponseSender
类从未执行过。我需要注册一些view_manager
策略才能在CLI中得到显示吗? 这里有zf3骨架应用程序的源文件:https://gist.github.com/kachar/06f0c9096bcc1cc0b00f4612aed1b68b
运行该应用程序:
$ php -v
PHP 7.0.6 (cli) (built: Apr 27 2016 14:00:40) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
$ php public/index.php
Application\Module::getConsoleBanner
Application\Module::getConsoleUsage
$ php public/index.php user
Application\Controller\IndexController::indexAction