[英]Laravel 5.2.x test if vendor exists
檢查Laravel項目中是否存在供應商的最佳方法是哪種?
$foo = 'Foo\Foo';
if (class_exists($foo)) {
// class exists
}
有更好的解決方案嗎? 我不知道的Laravel方法?
謝謝!
這是正確的做法,Laravel沒有這方面的功能。
但最正確的方法是使用完整命名空間檢查類的存在,如:
$foo = 'Symfony\Component\HttpFoundation\Request';
if (class_exists($foo)) {
// class exists
}
我並不認為這是一種真正最好的方式 - 也就是說,我知道它沒有一個很好的API。
但是,使用非Laravel方法,您可以檢查Composer installed.json
文件(我以前做過的,位於vendor/composer/installed.json
),或者正如您所說,檢查類存在檢測。
使用Laravel方式,如果您知道第三方庫特別是帶有服務提供商的Laravel庫或者在IoC容器中注冊的東西,您可以在那里查看 - 查看config('app.providers')以查看是否它包含您期望的服務提供者類,或者查看app('the.binding.name')
返回您期望的內容(或者使用$app->bound('the.binding.name')
)。
更好的是,如果它是驅動程序,例如數據庫引擎,您可以查詢數據庫管理器以查看驅動程序是否已注冊。 這可能是您最好的方式,但更確切地說取決於您想要檢測的第三方庫。
我認為你應該像使用這樣的app容器以laravel的方式嘗試它:
try {
app($foo);
} catch (\ReflectionException $e) {
// here you know that class dosen't exists
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.