php - 如何在 Laravel 5 中动态注册命令和调度程序?

标签 php laravel laravel-5

我正在开发一个由多个 Laravel 5 应用程序使用的 Composer 包,因此我在那里有一个服务提供商,当安装在一个 Laravel 5 应用程序中时,它会将好东西挂接到 Laravel 5 应用程序中。

我知道我可以为依赖包注册服务提供者,如下所示:

$this->app->register(\Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class);
$this->app->register(\EvanDarwin\JSend\Laravel\ServiceProvider::class);
$this->app->register(\Prettus\Repository\Providers\RepositoryServiceProvider::class);

我知道我也可以像这样加载别名:

$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('Excel', 'Maatwebsite\Excel\Facades\Excel');
$loader->alias('Firewall', 'PragmaRX\Firewall\Vendor\Laravel\Facade');

但是注册命令和调度调用又如何呢?也有方法可以做到这一点吗?如果是,我该怎么做?

我是一名新手,试图学习良好的 OOP 实践,但我陷入了这样的困境。更重要的是,我到哪里去寻找这样的东西?也有这方面的文档吗?因为我在 laravel 的包开发部分找不到这些东西。

最佳答案

服务提供者有一个 commands() 方法,可以向 artisan 注册命令。您可以像这样使用它:

public function register()
{
    $this->app->singleton('command.goodies.yourcommand', function ($app) {
        return $app['Your\Namespace\Commands\YourCommand'];
    });
    $this->commands('command.goodies.yourcommand');
}

就设置计划任务而言,我不认为可以(或应该)从您的包中完成。注册命令为用户提供了可以使用的工具。然而,安排任务是尝试使用适合他们的工具。这应该由用户来做。

最好的办法是在文档中非常清楚地说明如何安排任务以及您的建议是什么。 “操作方法”还应该包括输入 cron 作业,因为这可能是用户第一次设置计划任务。

关于php - 如何在 Laravel 5 中动态注册命令和调度程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34740837/

相关文章:

拉维尔 5 : how to get the paths of all routes?

php - 动态多级菜单和子菜单php mysql

javascript - Wordpress 使用 URL 注销并重定向到指定页面

PHP 5.4 代码更新 - 从 foreach 和对象数组中的空值警告创建默认对象

laravel - laravel事件在真实聊天应用中生成错误

php - Laravel 管理员编辑路线不起作用。返回 404

php - Laravel foreach 中的独特/不同

php - 如何使用 Laravel Eloquent 地避免 "duplicate key value violates unique constraint"?

javascript - 第二个ajax调用不触发

php - 如何验证以太坊地址 PHP/Laravel?