Php 使用动态方法

Php 使用动态方法,php,Php,为什么我的动态方法usersMethod不返回任何结果? 页面总是空的 <?php class SampleClass { public function __call($name, $args) { $m = $this->methods(); eval($m['usersMethod']); } public function methods() { $methods = array(

为什么我的动态方法
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();
?>

您需要返回以下值:


(请参阅)

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

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

只有这样,内部$a才会通过调用方法返回。

您应该真正更改
\u call()
以使用传入的名称和参数,而不是硬编码。
 return eval($m['usersMethod']);