Maison  >  Article  >  développement back-end  >  Laravel源码里面为什么要用::class语法?

Laravel源码里面为什么要用::class语法?

WBOY
WBOYoriginal
2016-12-05 13:44:242036parcourir

自 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...

这个是类型 App\Http\Kernel,是一个类的对象类型;

这个是类的类名字符串 AppHttpKernel::class,是字符串。

这个问题你先理解 Laravel 的容器概念了来。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn