psr-0/4自动加载的回退位置



我正在构建一个PHP包,其中有一个文件夹(比如/vendor/myvendor/packagename/src/Classes),我想使用PSR-4自动加载它。

但我也想提供一个选项,将该文件夹从其当前位置复制到项目根目录(比如/packagename/Classes,类似于Laravel的publish命令)。

那么我该如何进行自动加载呢?

我希望Composer首先查看该文件夹是否存在于应用程序的根目录下,如果存在,则自动加载该文件夹。否则将回退到/vendor内的默认位置。这可能吗?

FWIW,这是Laravel特定的包,这意味着我可以使用Laravel的publish命令将整个文件夹复制到任何位置,但随后

  1. 我必须手动添加新位置以自动加载
  2. 即使我这样做了,旧位置和新位置之间也会存在名称空间冲突

我希望Composer首先查看该文件夹是否存在于应用程序的根目录下,如果存在,则自动加载。否则,将回退到供应商内部的默认位置。这可能吗?

是的,这是可能的

你需要在包裹的ServiceProvider上注明所有内容。

有关于如何在文档中发布您的视图、资产的所有信息,它符合您的需求。

看看文档:

https://laravel.com/docs/5.3/packages#public-资产

我在这里为您复制一些示例:

如果你想发布你的翻译,你需要执行以下任务:

/**
* Perform post-registration booting of services.
*
* @return void
*/
public function boot()
{
$this->loadTranslationsFrom(__DIR__.'/path/to/translations', 'courier');
$this->publishes([
__DIR__.'/path/to/translations' => resource_path('lang/vendor/courier'),
]);
}

如果您在app'slang/vendor/courier中没有翻译,则返回到您的包翻译。

您不需要复制类代码,这些代码可以保留在包目录中。您只能复制您的视图、资产、翻译文件等。

这应该对你有帮助。

相关内容

  • 没有找到相关文章

最新更新