我看过几个关于如何在PHP中获取类或对象名称的讨论帖。然而,我无法看到解释不同可能性之间区别的任何地方。我希望这里有人能帮助我。
因此,为了获取所调用类的类名,我知道两种可能性:
1. `get_called_class()` 2. `static::class`
(对于非静态类,使用`get_class($this)`)
而要获取代码所在类的类名,我知道以下三种可能性:
1. `get_class()` 2. `__CLASS__` 3. `self::class`
我是否忽略了任何差异?一个方法比另一个方法更具优势和劣势是什么?
因此,为了获取所调用类的类名,我知道两种可能性:
1. `get_called_class()` 2. `static::class`
(对于非静态类,使用`get_class($this)`)
而要获取代码所在类的类名,我知道以下三种可能性:
1. `get_class()` 2. `__CLASS__` 3. `self::class`
我是否忽略了任何差异?一个方法比另一个方法更具优势和劣势是什么?
::class
,当你可以使用get_class()
、__CLASS__
和get_called_class()
来完成同样的事情呢? - Alexander Jank::class
可以在编译时评估,get_class()
是一个函数调用,因此它返回的值仅在执行时可用。 - axiac::class
更高效? - Alexander Jank::class
被添加用于获取任何类的 FQN,只需使用本地类名(没有对象,并且从类外部);它可以像get_class()
、get_called_class()
和__CLASS__
一样工作,这只是一个连锁反应。请参阅 "Class Name Resolution As Scalar Via "class" Keyword" PHP RFC。 - outis