簡體   English   中英

psr-0/4自動加載的后備位置

[英]Fallback location for psr-0/4 autoloading

我正在構建一個PHP包,在其中我有一個文件夾(比方說/vendor/myvendor/packagename/src/Classes )我想用PSR-4自動加載。

但我還想提供一個選項,將該文件夾從當前位置復制到項目根目錄(比如/packagename/Classes ,這與Laravel的publish命令一致)。

那么我該如何進行自動加載呢?

我希望Composer首先看看該文件夾是否存在於應用程序的根目錄下,如果確實存在,則自動加載。 否則回退到/vendor的默認位置。 那可能嗎?

FWIW,這是Laravel特定包,這意味着我可以使用Laravel的publish命令來復制整個文件夾,但隨后

  1. 我必須手動將新位置添加到自動加載;
  2. 即使我這樣做,舊位置和新位置之間也會存在名稱空間沖突。

我希望Composer首先看看該文件夾是否存在於應用程序的根目錄下,如果確實存在,則自動加載。 否則回退到/ vendor中的默認位置。 那可能嗎?

對的,這是可能的。

您需要在ServiceProvider提及包的所有內容。

有關如何在文檔中發布視圖,資產以及它符合您需求的各種信息。

看看文檔:

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

我在這里為你復制一些例子:

如果要發布翻譯,則需要執行以下任務:

/**
 * 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's lang/vendor/courier翻譯,那么它將回退到您的包翻譯。

您無需復制類代碼,這些代碼可能保留在您的包目錄中。 您復制的唯一內容將是您的觀點,資產,翻譯文件等。

這應該對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM