听起来您已经回答了自己的问题。get_class
将为您获取班级名称。它是程序性的,也许正是造成混乱的原因。看看php文档get_class
这是他们的例子:
<?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 Late 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'