Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:获取传递的var的类名?_Php_Oop_Php4_Classname - Fatal编程技术网

PHP:获取传递的var的类名?

PHP:获取传递的var的类名?,php,oop,php4,classname,Php,Oop,Php4,Classname,我有一个函数,它将一个类作为参数传递给它。我想以字符串形式获取传递的类的类名 我尝试将此方法放入已传递的类中: function getClassName() { return __CLASS__; } 但是如果类被扩展,我假设它会返回子类的名称,但它仍然返回超类的名称,我觉得有点奇怪 所以,给定一个作为参数传递给函数的$var,是否有方法获取类名的字符串 谢谢 看,这正是你想要达到的目标 $class_name = get_class($object); _

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

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

function getClassName()
    {
        return __CLASS__;
    }
但是如果类被扩展,我假设它会返回子类的名称,但它仍然返回超类的名称,我觉得有点奇怪

所以,给定一个作为参数传递给函数的$var,是否有方法获取类名的字符串

谢谢

看,这正是你想要达到的目标

$class_name = get_class($object);

__类u uu,返回在其中实现该方法的类的名称

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

get_class($param);
另外,如果您使用的是PHP5,那么提供的反射类也很有用。

使用:


直接从php文档:


上述示例将输出:
字符串(3)“foo”
字符串(3)“bar”

您还可以向传递的类中添加一个方法,返回以下内容:


var_dump(get_称为_class())

获取没有命名空间的类名的最简单方法是:

$class = explode('\\', get_called_class());
echo end($class);
或者用preg_替换

echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());
$class = explode('\\', get_called_class());
echo end($class);
echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());