0

所以我正在制作一个 Laravel 工匠命令。在该命令中,我为一个包运行“composer require”。我正在尝试找到一种方法来使用我需要的那个包而不离开我所在的当前命令。

我想像自动加载文件时那样临时将命名空间添加到 Laravel。

所以我的第一个问题是如何在 Artisan Command 中使用下面的代码?由于应用程序无法在工匠命令中自动访问。

include_once __DIR__ .'/../vendor/....';

$this->app->make('My\Namespace');

我的第二个问题。假设我让上面的代码在 Artisan 命令中正常工作,那会不稳定吗?我应该在作曲家要求之后再做一个工匠命令吗?

任何意见,将不胜感激。

4

1 回答 1

0

为了回答您的第一个问题,composer 有自己的API可以手动执行它在后台执行的操作。

您可以要求一个包,然后使用其供应商路径在 classmaps API 中添加新的 Class fo 用法,并在您的命令中转储自动加载。

其次,我建议制定 2 个命令,每个命令只负责执行一项任务。一是安装和处理安装错误,二是使用它。

最后但重要的是,这是一种非常规的方式来要求一个包。因为大多数包都需要一次,然后可以在项目中更新/删除。因此,您可以手动安装一次软件包,然后运行命令,以消除使用命令安装软件包的烦恼。

于 2019-02-11T20:10:21.747 回答