自 PHP 5.5 起,關鍵詞 class 也可用於類名的解析。使用 ClassName::class 你可以擷取一個字串,包含了類 ClassName 的完全限定名稱。這對使用了 命名空間 的類尤其有用。
$app->singleton( Illuminate\Contracts\Http\Kernel::class, App\Http\Kernel::class);$app->singleton( Illuminate\Contracts\Console\Kernel::class, App\Console\Kernel::class);$app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class);
這段bootstrap/app.php代碼中既然已經寫了類的完全限定名,為什麼還要用::class文法?
回複內容:
自 PHP 5.5 起,關鍵詞 class 也可用於類名的解析。使用 ClassName::class 你可以擷取一個字串,包含了類 ClassName 的完全限定名稱。這對使用了 命名空間 的類尤其有用。
$app->singleton( Illuminate\Contracts\Http\Kernel::class, App\Http\Kernel::class);$app->singleton( Illuminate\Contracts\Console\Kernel::class, App\Console\Kernel::class);$app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class);
這段bootstrap/app.php代碼中既然已經寫了類的完全限定名,為什麼還要用::class文法?
知乎上有人給出了正確的回答https://www.zhihu.com/questio...
這個是類型 App\Http\Kernel,是一個類的物件類型;
這個是類的類名字串 AppHttpKernel::class,是字串。
這個問題你先理解 Laravel 的容器概念了來。