如何创建ZF3控制台应用程序

问题描述 投票:18回答:2

在Zend Framework 2中,将初始模块横幅添加到控制台应用程序非常简单。

我们所需要的只是实现getConsoleBannergetConsoleUsage方法并实现Zend\ModuleManager\Feature\ConsoleUsageProviderInterfaceConsoleBannerProviderInterface接口。

当通过CLI启动public/index.php时,这足以将这些消息转储到控制台中。

在Zend Framework 3中,它不一样。

执行相同的设置不会提供相同的结果。实际上在控制台中我们看到骨架应用程序的默认html页面与我们通过浏览器访问它的方式相同。

在我们安装自定义模块之前会看到该页面:以下是zend-mvc-console模块https://zendframework.github.io/zend-mvc-console/intro/的文档

即使按照建议安装了模块(在模块定义中添加了'Zend\Mvc\Console'),也不会显示控制台横幅。我已经在方法中测试了var dumping并且我能够查看数据,因此框架执行这些方法但在控制台中没有显示结果。

我已经测试过控制台路由和控制器。找到路径,执行控制器操作但是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
php zend-framework console-application zf3
2个回答
11
投票

根据我们自己的文档,MVC <-> Console integration is deprecated。我们建议使用zf-consolesymfony console为您的应用程序构建控制台功能。

我们知道zend-mvc-console存在问题,我们很快就会发布一个补丁版本来解决它们,这将解决你的短期问题。但是,我们建议长期迁移到另一个解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.