簡體   English   中英

composer軟件包:如何要求供應商lib自動加載

[英]composer package : how to require vendor lib autoload

大約一年前,我已經開了一個關於我喜歡的作曲家軟件包的問題:jobby(它可以管理PHP中的CRON任務): 請參閱問題

我對此軟件包的問題是,作曲家供應商的lib硬編碼在名為BackgroundJob.php的文件中( 請參閱file

if (file_exists('vendor/autoload.php')) {
    require('vendor/autoload.php');
} else {
    require(dirname(dirname(dirname(dirname(dirname(__DIR__))))) . '/vendor/autoload.php');
}

但是我的供應商目錄不是“ vendor”,而是“ php / lib”,並且不能轉讓;)

我的丑陋解決方案是自動加載文件的硬代碼路徑,但是每次安裝lib時,我都必須手動編輯BackgroundJob.php。

由於供應商lib可以是任何深度,我真的在徘徊什么是解決此問題的最佳方法:顯然Jobby不是唯一一個需要運行composer中其他庫的軟件包。 您能指出我要處理的圖書館嗎,這樣我就可以看看或給我您的想法嗎?

謝謝

我認為沒有干凈或好的解決方案將您不擁有的軟件包安裝到vendor以外的其他目錄中,因為這是一個非常糟糕的主意。 這是由作曲家設計的! 這是使作曲家很棒的一件事。 有一篇很好的文章介紹了為什么將軟件包安裝到除vendor以外的目錄中是一個壞主意。

如果您確實有很好的理由,而不僅僅是“但我想...”,而您確實確實需要這樣做(我建議您不要這樣做!),那么您可以使用作曲家腳本做一些技巧。 應該有可能運行post-package-updatepost-package-install腳本,以將軟件包從供應商移動到所需目錄。

但是請記住,每個開發人員都會討厭您這樣做。 有一些原因使vendor成為第三方軟件包的唯一目錄。 這不僅僅是娛樂的限制。

這是一個不好的解決方案,但是可以解決這個問題:

分叉該項目=>更改代碼=>制作您的自定義包

以后,您可以安裝自己的自定義軟件包。

暫無
暫無

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

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