PHP:获取传递var的类名?

时间:2010-02-15 15:26:24

标签: php oop php4 classname

我有一个函数,它将一个类作为参数传递给它。我想将传递的类的类名称作为字符串。

我尝试将此方法放在传递的类中:

function getClassName()
    {
        return __CLASS__;
    }

但是如果类被扩展,我认为这将返回子类的名称,但它仍然返回超类的名称,我发现它有点奇怪。

因此,如果将$ var作为参数传递给函数,是否有办法获取类名的字符串?

谢谢!

6 个答案:

答案 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());