public class MyClass {
}
在Java中,我们可以用String className = MyClass.class.getSimpleName();
来获取类名
如何在PHP中做到这一点?我已经知道get_class()
了,但它只适用于对象。目前我在Active Record工作。我需要像MyClass::className
这样的语句。
发布于 2013-02-27 11:47:42
您可以在类中使用__CLASS__
来获取名称。
发布于 2013-02-27 12:11:44
听起来你回答了你自己的问题。get_class
将为您提供类名。这是程序性的,也许这就是造成混乱的原因。看看get_class
的php文档。
下面是他们的例子:
<?php
class foo
{
function name()
{
echo "My name is " , get_class($this) , "\n";
}
}
// create an object
$bar = new foo();
// external call
echo "Its name is " , get_class($bar) , "\n"; // It's name is foo
// internal call
$bar->name(); // My name is foo
为了让它更像你的例子,你可以这样做:
<?php
class MyClass
{
public static function getClass()
{
return get_class();
}
}
现在您可以执行以下操作:
$className = MyClass::getClass();
然而,这在某种程度上是有限的,因为如果我的类被扩展了,它仍然会返回'MyClass‘。我们可以改为使用get_called_class
,它依赖于Late Static Binding,这是一个相对较新的功能,并且需要PHP >= 5.3。
<?php
class MyClass
{
public static function getClass()
{
return get_called_class();
}
public static function getDefiningClass()
{
return get_class();
}
}
class MyExtendedClass extends MyClass {}
$className = MyClass::getClass(); // 'MyClass'
$className = MyExtendedClass::getClass(); // 'MyExtendedClass'
$className = MyExtendedClass::getDefiningClass(); // 'MyClass'
发布于 2017-10-25 17:38:23
要获取类名,可以使用ReflectionClass
class MyClass {
public function myNameIs(){
return (new \ReflectionClass($this))->getShortName();
}
}
https://stackoverflow.com/questions/15103810
复制相似问题