提问人:Andrew G. Johnson 提问时间:1/25/2009 更新时间:3/15/2013 访问量:4437
可以从PHP中未实例化的对象中获取当前类的名称吗?
Possible to get name of current class from an uninstantiated object in PHP?
问:
我知道您可以正常使用 get_class($this),但我需要在对象尚未实例化的静态函数中获取类的名称。
请参见以下代码:
class ExampleClass
{
static function getClassName()
{
echo get_class($this); // doesn't work unless the object is instantiated.
}
}
$test1 = new ExampleClass();
$test1->getClassName(); // works
ExampleClass::getClassName(); // doesn't work
答:
3赞
Andrew G. Johnson
1/25/2009
#1
我发现你可以用__CLASS__来获取类名。例:
class ExampleClass
{
static function getClassName()
{
echo __CLASS__;
}
}
评论
7赞
troelskn
1/25/2009
请注意,CLASS 将返回定义函数的类。如果扩展它,则不会获得子类。
1赞
Crescent Fresh
1/25/2009
@troelskn:很可能会咬问者的屁股。您也应该将其作为答案提交,以便更多人看到它。
8赞
Eddie Parker
1/25/2009
#2
如果您希望从静态方法中获取类名,我认为您正在寻找 get_called_class() 函数。
有关详细信息,请参阅get_called_class文档。
0赞
Kenzal Hunter
1/26/2009
#3
我的问题是,您如何在一开始就不知道类名的情况下调用静态函数?
我能想到的只有两种方法是:
ExampleClass::getClassName(); //Hard Coded - the class name is hard and visible
$class = "ExampleClass";
$class::getClassName(); //Soft Coded - the class name is the value of $class
如果我们知道您尝试拨打电话的背景,也许可以提供更好的解决方案?
评论
0赞
Andrew G. Johnson
1/27/2009
我正在调用一个继承的类,并且父类中有一个 switch() 语句,该语句需要类名来决定要做什么
0赞
Kenzal Hunter
1/27/2009
您尝试从中切换需要静态函数的变量数据是什么?
评论