2012-07-24 69 views
0

它知道它可以用get_class($variable)完成。 问题是我的$object实际上是一个包含变量名称的字符串。确定对象的类别

这样:

$object = new MyClass(); 

$var = '$object'; 

$class = get_class($var); // obviously fails 

我不能使用get_class($object),因为我没有这个变量直接访问

(我是从parsing a PHP expression使用token_get_all()产生$var字符串)我尝试使用eval(sprintf('return get_class(%s);', $var)),但它不工作,因为变量出现未定义从eval的范围:(

有没有办法做到这一点?

我需要知道该类以便将它传递给ReflectionMethod,以便我可以获取有关方法(PHP表达式中的下一个元素)的信息。


NVM:我很确定这是不可能的。对不起,问:)

+0

@Andreas Linden不应该从$ var取消前导$来做到这一点吗? – yent 2012-07-24 14:15:41

+0

@yent你是对的 – 2012-07-24 14:19:49

回答

1

你可以做

$var = new $object();

+0

我不认为我想初始化对象... – 2012-07-24 14:16:01

+0

好的抱歉,我误解了你的问题。 – nico 2012-07-24 14:16:43

1

尝试使用可变的变量:http://php.net/manual/en/language.variables.variable.php

喜欢的东西:

$var = 'object'; 
$class = get_class($$var); 
+0

不起作用。该变量有一个NULL值 – 2012-07-24 14:18:43

+0

我不认为它的可能性,除非该变量暴露在当前范围:( – 2012-07-24 14:19:45

+0

哦,是的,它确实需要在当前范围。我不知道你期望如何访问它的变量在哪里? – 2012-07-24 14:20:26

1

,你可以做以下

$ref = ltrim($var, '$'); 
get_class($ref);