我已經構建了一個包含在我的 Laravel 專案中的 Laravel 8 包,該包可以選擇利用另一個包的功能,例如 Traits,我有條件地使用 PHP 將這些加載到包的控制器中,class_exists但這會引發以下錯誤我的控制器的第 22 行:
語法錯誤,意外的“使用”(T_USE)
我的控制器看起來像:
<?php
namespace Stsonline\InboundManagement\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Company\CorePackage\Models\Affiliates;
use Company\CorePackage\Models\Settings;
if (class_exists('Company\OptionalPackage\Traits')) {
use Company\OptionalPackage\Traits\Proxy;
}
class UtilityController extends Controller
{
if (class_exists('Company\OptionalPackage\Traits')) {
use Proxy;
}
/**
* Inbound Array
*
* Store private variables for use elsewhere.
*/
public $inboundArray
// ... functions below here
}
我錯過了什么?僅當另一個包存在時,我才需要從另一個包中的檔案中提取功能和功能。
uj5u.com熱心網友回復:
由于這是一個 Laravel 控制器并且您不能有條件地選擇每個請求創建的實體,您可以創建以下類:
class UtilityController extends Controller {
// Nothing used
}
class UtilityProxyController extends UtilityController {
use Proxy;
// add utility controller functions that use the `Proxy` trait in this one
}
然后在 web.php 或 api.php(或您宣告路由的地方)執行:
// Add all `UtilityContoller` routes here
if (class_exists('Company\OptionalPackage\Traits\Proxy')) {
Route::get('someroute/path', [ UtilityProxyController::class, 'handler' ]);
}
當特征不存在時,您還可以為路由處理程式創建另一個“后備”類,以防在這些情況下您不想要默認的 404 回應。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/377695.html
上一篇:如何將多樹陣列內爆為字串
下一篇:從PHP中的字串中提取百分比
