Ala*_*orm 5 php class constants laravel
在Laravel 5.1中,CLI类的内核看起来像这样
#File: app/Console/Kernel.php
class Kernel extends ConsoleKernel
{
//...
protected $commands = [
\App\Console\Commands\Inspire::class,
];
//...
}
Run Code Online (Sandbox Code Playgroud)
是使用预定义/魔术常量的更改 ::class
\App\Console\Commands\Inspire::class
Run Code Online (Sandbox Code Playgroud)
功能上不同于简单地使用类名?
\App\Console\Commands\Inspire
Run Code Online (Sandbox Code Playgroud)
不,::class在类上使用会返回完全限定的类名,因此它与写入相同'App\Console\Commands\Inspire'(在引号中,因为它是一个字符串).该class关键字是PHP 5.5的新增内容.
在这个例子中它看起来很愚蠢,但它可以用于例如测试或定义关系.例如,如果我有一个Article班级和一个ArticleComment班级,我可能最终会这样做
use Some\Long\Namespace\ArticleComment;
class Article extends Model {
public function comments()
{
return $this->hasMany(ArticleComment::class);
}
}
Run Code Online (Sandbox Code Playgroud)
参考:PHP文档.
为了执行代码,它没有什么区别,但是::class常量对于开发工具最有用.如果使用类名,则必须将其写为字符串'\App\Console\Commands\Inspire'- 这意味着:
旁注:在PHP 5.5出现之前,我曾经__CLASS在我自己的大多数类中定义一个常量,用于此目的:
class X {
const __CLASS = __CLASS__;
}
Run Code Online (Sandbox Code Playgroud)