我有一个函数可以将一个类作为参数传递给它。我想将传递的类的类名作为字符串获取。
我尝试将此方法放在传递的类中:
function getClassName()
{
return __CLASS__;
}
但是如果类被扩展,我认为这将返回子类的名称,但它仍然返回我觉得有点奇怪的超类的名称。
那么给定一个 $var 作为参数传递给函数,有没有办法获取类名的字符串?
谢谢!!
请参阅get_class,这应该正是您想要实现的目标。
$class_name = get_class($object);
如何在没有命名空间的情况下获取类名的最简单方法是:
$class = explode('\\', get_called_class());
echo end($class);
或使用 preg_replace
echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());
__ CLASS __ 返回实现该方法的类的名称。
如果要获取传递的对象的类名,则可以使用:
get_class($param);
此外,如果您使用的是 PHP5,那么提供的反射类也很有用。
使用get_class:
$className = get_class($object);
直接来自 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"
您还可以在传递的类中添加一个方法,返回:
var_dump(get_called_class());