簡體   English   中英

如果供應商存在,Laravel 5.2.x測試

[英]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.

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