我有一个函数,它将一个类作为参数传递给它。我想将传递的类的类名称作为字符串。
我尝试将此方法放在传递的类中:
function getClassName()
{
return __CLASS__;
}
但是如果类被扩展,我认为这将返回子类的名称,但它仍然返回超类的名称,我发现它有点奇怪。
因此,如果将$ var作为参数传递给函数,是否有办法获取类名的字符串?
谢谢!
答案 0 :(得分:12)
请参阅get_class,这应该是您想要实现的目标。
$class_name = get_class($object);
答案 1 :(得分:11)
如何获取没有名称空间的类名的最简单方法是:
$class = explode('\\', get_called_class());
echo end($class);
或使用preg_replace
echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());
答案 2 :(得分:1)
__ CLASS __,返回实现该方法的类的名称。
如果要获取传递的对象的类名,则可以使用:
get_class($param);
另外,如果您使用的是PHP5,那么提供的Reflection类也很有用。
答案 3 :(得分:0)
使用get_class:
$className = get_class($object);
答案 4 :(得分:0)
直接来自php文档:http://uk.php.net/manual/en/function.get-class.php
<?php
abstract class bar {
public function __construct()
{
var_dump(get_class($this));
var_dump(get_class());
}
}
class foo extends bar {
}
new foo;
?>
The above example will output:
string(3) "foo"
string(3) "bar"
答案 5 :(得分:0)
你也可以在传递的类中添加一个方法,返回这个:
的var_dump(get_called_class());