PHP:获取传递的变量的类名?

Posted

技术标签:

【中文标题】PHP:获取传递的变量的类名?【英文标题】:PHP: Get class name of passed var? 【发布时间】:2011-01-17 00:55:05 【问题描述】:

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

我试着把这个方法放在传递的类中:

function getClassName()
    
        return __CLASS__;
    

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

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

谢谢!!

【问题讨论】:

【参考方案1】:

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

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

或者用 preg_replace

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

【讨论】:

【参考方案2】:

你也可以在传递的类中添加一个方法来返回这个:

var_dump(get_called_class());

【讨论】:

【参考方案3】:

直接来自 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"

【讨论】:

【参考方案4】:

使用get_class:

$className = get_class($object);

【讨论】:

【参考方案5】:

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

如果你想获取传递的对象的类名,那么你可以使用:

get_class($param);

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

【讨论】:

【参考方案6】:

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

$class_name = get_class($object);

【讨论】:

以上是关于PHP:获取传递的变量的类名?的主要内容,如果未能解决你的问题,请参考以下文章

使用变量类名 (PHP) 访问静态方法

PHP中的变量名,函数名,类名是区分大小写的吗

php 可以动态的new一个变量类名

在视图中传递类名(rails)

PHP:通过类名获取 DOM 元素

通过反射获取类的类名,方法和内部成员变量