Как создать консольное приложение ZF3
В Zend Framework 2 очень просто добавить начальный модуль баннера в консольные приложения.
Все, что нам нужно - реализовать методы getConsoleBanner
и getConsoleUsage
и реализовать интерфейсы Zend\ModuleManager\Feature\ConsoleUsageProviderInterface
или ConsoleBannerProviderInterface
.
Это достаточно хорошо, чтобы сбрасывать эти сообщения в консоли, когда public/index.php
запускается через CLI.
В Zend Framework 3 это не то же самое.
Выполнение одной и той же настройки не дает того же результата. На самом деле в консоли мы видим страницу html по умолчанию для приложения скелета так же, как мы посещаем его через браузер.
Эта страница отображается перед установкой настраиваемого модуля:
Вот документы для модуля zend-mvc-console
https://zendframework.github.io/zend-mvc-console/intro/
Даже после установки модуля как предложено ('Zend\Mvc\Console'
добавлено в определениях модулей) консольные баннеры не отображаются. Я тестировал с var dumping внутри методов, и я могу просматривать данные, поэтому среда выполняет эти методы, но не показывает результат в консоли.
Я тестировал консольные маршруты и контроллеры. Маршрут найден, выполняется действие контроллера, но ничего не отображается в кли.
Я выкопал код кода и кажется, что класс 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
Ответы
Ответ 1
В нашей собственной документации MVC ↔ Консольная интеграция устарела. Мы рекомендуем использовать zf-console или консоль symfony для консоли здания для вашего приложения.
Мы знаем о проблемах с zend-mvc-консолью, и вскоре мы выпустим выпуск исправлений, чтобы решить их, что позволит устранить ваши краткосрочные проблемы. Тем не менее, мы рекомендуем перейти на другое решение в долгосрочной перспективе.
Ответ 2
Вы можете использовать модуль zend-mvc-console. Тот же API, что и консоль zf2:)
Пожалуйста, не забывайте, что этот модуль будет устаревшим.
Источники: