Laravel 5包计划任务

Laravel 5包计划任务,laravel,laravel-5,Laravel,Laravel 5,我正在开发一个包含一些计划任务的软件包——有没有办法在不影响已设置计划任务的基础应用程序的情况下注册/发布它们 我不想覆盖App/Console/Kernel.php,因为基础应用程序可能已经有自己的计划任务等。在您的包服务提供商中,请执行以下操作: /** @var array list of commands to be registered in the service provider */ protected $moreCommands = [ \My\Package\Comm

我正在开发一个包含一些计划任务的软件包——有没有办法在不影响已设置计划任务的基础应用程序的情况下注册/发布它们


我不想覆盖
App/Console/Kernel.php
,因为基础应用程序可能已经有自己的计划任务等。

在您的包服务提供商中,请执行以下操作:

/** @var array list of commands to be registered in the service provider */
protected $moreCommands = [
    \My\Package\CommandOne::class,
    \My\Package\CommandTwo::class,
    \My\Package\CommandThree::class,
];
然后在服务提供程序的boot()方法中执行以下操作:

$this->commands($this->moreCommands);

非常好的问题,顺便说一句。让我在Laravel API文档中搜索以找到答案,当我找到答案时,我在我自己的一个包中实现了它。

你当然可以,通过一些基本的面向对象编程

步骤1:创建包的“内核”控制台类 让我们在包的控制台目录中创建一个内核类,我们将在其中扩展
App\Console\Kernel


为什么不添加您自己的'PackageKernel.php'?据我所知,只有一个HTTP内核和一个控制台内核已启动。是的,您是对的,我尝试过,这已经在不同的地方得到了记录-我已经很好地注册了命令,但我要问的是如何注册实际的
$schedule->命令('some:command')->daily()
在包内。为什么我们要调用parent::schedule?它取代了本机控制台内核?虽然解决方案可以在单个包中工作,但在多个包中实现相同的解决方案只适用于在最后一个包中注册的包。任何修复此问题的建议。