首頁  >  文章  >  後端開發  >  Laravel原始碼裡面為什麼要用::class文法?

Laravel原始碼裡面為什麼要用::class文法?

WBOY
WBOY原創
2016-12-05 13:44:242035瀏覽

自 PHP 5.5 起,關鍵字 class 也可用於類別名稱的解析。使用 ClassName::class 你可以取得一個字串,包含了類別 ClassName 的完全限定名稱。這對使用了 命名空間 的類別尤其有用。

<code>$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
);
</code>

這段bootstrap/app.php程式碼中既然已經寫了類別的完全限定名,為什麼還要用::class語法?

回覆內容:

自 PHP 5.5 起,關鍵字 class 也可用於類別名稱的解析。使用 ClassName::class 你可以取得一個字串,包含了類別 ClassName 的完全限定名稱。這對使用了 命名空間 的類別尤其有用。

<code>$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
);
</code>

這段bootstrap/app.php程式碼中既然已經寫了類別的完全限定名,為什麼還要用::class語法?

知乎上有人給了正確的答案https://www.zhihu.com/questio...

這個是型別 AppHttpKernel,是一個類別的物件型別;

這個是類別的類別名稱字串 AppHttpKernel::class,是字串。

這個問題你先理解 Laravel 的容器概念了來。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn