gpt4 book ai didi

php - PHP 中的::类是什么?

转载 作者:太空狗 更新时间:2023-10-29 12:39:16 24 4
gpt4 key购买 nike

PHP 中的::class 表示法是什么?

由于语法的性质,快速的 Google 搜索不会返回任何结果。

冒号冒号类

使用这种表示法有什么好处?

protected $commands = [
\App\Console\Commands\Inspire::class,
];

最佳答案

SomeClass::class 将返回 SomeClass 的完全限定名称,包括命名空间。此功能已在 PHP 5.5 中实现。

文档:http://php.net/manual/en/migration55.new-features.php#migration55.new-features.class-name

它非常有用有两个原因。

  • 您不必再将类名存储在字符串中。因此,许多 IDE 可以在您重构代码时检索这些类名
  • 你可以使用use关键字来解析你的类,你不需要写完整的类名。

例如:

use \App\Console\Commands\Inspire;

//...

protected $commands = [
Inspire::class, // Equivalent to "App\Console\Commands\Inspire"
];

更新:

此功能对于 也很有用 Late Static Binding .

除了使用 __CLASS__ 魔术常量,您还可以使用 static::class 特性来获取父类中派生类的名称。例如:

class A {

public function getClassName(){
return __CLASS__;
}

public function getRealClassName() {
return static::class;
}
}

class B extends A {}

$a = new A;
$b = new B;

echo $a->getClassName(); // A
echo $a->getRealClassName(); // A
echo $b->getClassName(); // A
echo $b->getRealClassName(); // B

关于php - PHP 中的::类是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54269655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com