![](/img/trans.png)
[英]Loading a Composer package not listed in vendor/composer/autoload_namespaces.php
[英]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-update
或post-package-install
腳本,以將軟件包從供應商移動到所需目錄。
但是請記住,每個開發人員都會討厭您這樣做。 有一些原因使vendor
成為第三方軟件包的唯一目錄。 這不僅僅是娛樂的限制。
這是一個不好的解決方案,但是可以解決這個問題:
分叉該項目=>更改代碼=>制作您的自定義包
以后,您可以安裝自己的自定義軟件包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.