使用动态方法

时间:2011-05-29 14:26:31

标签: php

为什么我的动态方法usersMethod不会返回任何结果? 页面总是空的。

<?php
class SampleClass
{
    public function __call($name, $args)
    {
        $m = $this->methods();

        eval($m['usersMethod']);
    }

    public function methods()
    {
        $methods = array(
            'usersMethod'=>'$a=2; return $a;', 
            'membersMethod'=>'$a=1; return $a;'
        );

        return $methods;
    }
}
$sample = new SampleClass();
echo $sample->usersMethod();
?>

2 个答案:

答案 0 :(得分:4)

您需要返回eval

的值
return eval($m['usersMethod']);

(见this answer

答案 1 :(得分:2)

您在代码段中有一个return语句,用作“函数”。但是此返回仅通过eval()发送值。您还需要返回eval结果:

 return eval($m['usersMethod']);

只有这样才能通过__call()方法调用返回内部$ a。