php – 如何在Laravel 5中从包中注册console命令?
发布时间:2020-12-14 19:48:00 所属栏目:大数据 来源:网络整理
导读:从Laravel 5开始,我感兴趣的是 – 如何在Laravel 5中注册和使用来自包的控制台命令. 正如laracast讨论https://laracasts.com/discuss/channels/tips/developing-your-packages-in-laravel-5一样,我创建了一个目录结构,将我的包添加到自动加载并创建一个服务
从Laravel 5开始,我感兴趣的是 – 如何在Laravel 5中注册和使用来自包的控制台命令.
正如laracast讨论https://laracasts.com/discuss/channels/tips/developing-your-packages-in-laravel-5一样,我创建了一个目录结构,将我的包添加到自动加载并创建一个服务提供者 <?php namespace GoodvinEternalTree; use ConsoleInstallCommand; use IlluminateSupportServiceProvider; class EternalTreeServiceProvider extends ServiceProvider { public function boot() { } public function register() { $this->registerCommands(); } protected function registerCommands() { $this->registerInstallCommand(); } protected function registerInstallCommand() { $this->app->singleton('command.eternaltree.install',function($app) { return new InstallCommand(); }); } public function provides() { return [ 'command.eternaltree.install' ]; } } 我的InstallCommand.php脚本存储在/ src / Console中 <?php namespace GoodvinEternalTreeConsole; use IlluminateConsoleCommand; use SymfonyComponentConsoleInputInputOption; use SymfonyComponentConsoleInputInputArgument; class InstallCommand extends Command { protected $name = 'install:eternaltree'; protected $description = 'Command for EternalTree migration & model install.'; public function __construct() { parent::__construct(); } public function fire() { $this->info('Command eternaltree:install fire'); } } 我在app.php&注册服务提供商执行dump-autoload.但是当我尝试执行时 php artisan eternaltree:install 它告诉我 [InvalidArgumentException] There are no commands defined in the "eternaltree" namespace. 我认为我的命令没有被服务提供商注册,因为php artisan list没有显示我的命令.任何人都可以向我解释在Laravel 5中在自己的包中注册命令的正确方法是什么?
不需要使用服务容器和单例.您只需将命令类放入$this->命令([]);数组到服务提供者的register()部分.
像那样 : $this->commands([ AcmeMyCommand::class ]); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |