PHP:eval没有价值

时间:2018-03-10 07:47:14

标签: laravel controller eval laravel-5.5

我在数据库中存储了Controller@Action,但是当我尝试运行它时,它没有值。

我知道eval非常危险。如果在这种情况下我可以使用其他替代方案,我会对它开放。

我的代码我不想运行它:

//$action = "ExchangeController::module_getAllValutaByBank";
//$params = "K&H";
$test =  eval('\App\Http\Controllers\ModuleControllers' . "\\" . $action . "('" . $params . "');");
Debugbar::info($test);

我想要评估的代码:

  

这是对本地ForexChange网站的API请求。 @param银行的名字   @return结构化字符串

public static function module_getAllValutaByBank($bankName){
    $return = '';
    $data['bankName'] = $bankName;
    $response = self::getRequest($data);

    if(is_array($response)){
        $return .= $response[0]['bank'] . "\n";
        foreach($response as $key => $item){
            $return .= $item['valuta'] . " - " . round($item['buy'], 2) . " - " . round($item['sell'], 2) . "\n";
        }
    } else {
        $return = $response;
    }

    Debugbar::info($return);

    return $return;
}

Debugbar::info($return);

的输出
  

K& H Bank GBP - 338.51 - 363.07 AUD - 189.9 - 207.8 DKK - 39.75 - 43.93   日元 - 2.26 - 2.48加元 - 188.73 - 206.51挪威克朗 - 30.92 - 34.18瑞士法郎 -   256.89 - 275.53 SEK - 29.18 - 32.26 USD - 246.14 - 260.32 CZK - 11.51 - 12.97 PLN - 69.87 - 78.79 EUR - 302.92 - 320.38 HRK - 39.39 - 44.41

Debugbar::info($test);

的输出
  

哪里出错了?

修改

找到解决方案:

$test = call_user_func('\App\Http\Controllers\ModuleControllers' . "\\" . $action, $params));

1 个答案:

答案 0 :(得分:0)

找到解决方案:

$test = call_user_func('\App\Http\Controllers\ModuleControllers' . "\\" . $action, $params));