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

标签 php zend-framework console-application zf3

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

我们只需要实现 getConsoleBannergetConsoleUsage 方法并实现 Zend\ModuleManager\Feature\ConsoleUsageProviderInterface ConsoleBannerProviderInterface 接口(interface)。

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

在 Zend Framework 3 中不一样。

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

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

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

我已经使用控制台路由和 Controller 进行了测试。找到路由,执行 Controller 操作,但 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

最佳答案

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

我们知道 zend-mvc-console 的问题,我们将很快发布补丁版本来解决这些问题,这将解决您的短期问题。但是,我们建议从长远来看迁移到另一个解决方案。

关于php - 如何创建 ZF3 控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38636186/

相关文章:

php - PHP 中的 password_verify 问题

php - 使用 ajax 支持的社交网络复制 mysql 评论条目?

php - 如何为用户显示电子邮件地址但对机器人隐藏?有没有使用 PHP、Javascript 或 Jquery 的简单方法?

Python。如何将文本作为超链接打印到控制台?

c++ - 读取多个文件

php - 固定 PHP 5.3.5 数组的段错误

zend-framework - Zend DB Framework 检查查询是否有更新

php - zend Framework 2 - 使用验证器比较2个输入?

php - Zend 框架 - "Invalid controller specified"

c# - 防止 .Net Core 5 控制台应用程序在 Linux 作为服务运行时结束的推荐方法