4

我有一个函数可以将一个类作为参数传递给它。我想将传递的类的类名作为字符串获取。

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

function getClassName()
    {
        return __CLASS__;
    }

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

那么给定一个 $var 作为参数传递给函数,有没有办法获取类名的字符串?

谢谢!!

4

6 回答 6

12

请参阅get_class,这应该正是您想要实现的目标。

$class_name = get_class($object);
于 2010-02-15T15:29:43.487 回答
11

如何在没有命名空间的情况下获取类名的最简单方法是:

$class = explode('\\', get_called_class());
echo end($class);

或使用 preg_replace

echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());
于 2011-11-30T10:02:32.697 回答
1

__ CLASS __ 返回实现该方法的类的名称。

如果要获取传递的对象的类名,则可以使用:

get_class($param);

此外,如果您使用的是 PHP5,那么提供的反射类也很有用。

于 2010-02-15T15:30:02.820 回答
0

使用get_class

$className = get_class($object);
于 2010-02-15T15:30:42.707 回答
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"
于 2010-02-15T15:31:11.550 回答
0

您还可以在传递的类中添加一个方法,返回:

var_dump(get_called_class());

于 2010-02-15T16:18:46.423 回答