根据文档,命令类必须扩展 Command 或 ContainerAwareCommand 才能被自动发现和注册(当然,前提是它的包已在内核中注册)。
从 Symfony 4+ 开始,这个发现并没有像预期的那样工作。
尝试这个:
composer create-project symfony/skeleton test-maxmind-sf4
cd test-maxmind-sf4
composer req cravler/maxmind-geoip-bundle dev-master
php bin/console list
你会注意到:
- cravler:maxmind:geoip-update 未注册(“cravler”命名空间下没有任何内容
- Cravler\MaxMindGeoIpBundle\Command\UpdateDatabaseCommand 扩展了 ContainerAwareCommand
- Bundle Cravler\MaxMindGeoIpBundle\CravlerMaxMindGeoIpBundle 在所有环境的 config/bundles.php 中注册(自动生成的配方)
现在,当我用 Symfony 3 做同样的事情时,一切正常。
composer create-project symfony/skeleton test-maxmind-sf3 ^3.0
cd test-maxmind-sf3
composer req cravler/maxmind-geoip-bundle dev-master
php bin/console list
那里缺少什么?
谢谢,
本