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:获取传递的变量的类名?的主要内容,如果未能解决你的问题,请参考以下文章