eval()の代替 - PHP

Alternative for eval() -PHP

出典: link タグ:phpeval 更新時間:

  問題

私はPHPでURLマッピングを実装しようとしています。私はそのリンクが要求されたときに実行するURLと関数を格納するjsonファイルを持っています。私はeval()を使用していましたが、

次のクォートを念頭に置いてください。

eval()が答えであれば、間違ったことをほぼ確信しています 質問。 - Rasmus Lerdorf、PHPのBDFL

今私はそれを行うための他の(より良い)方法だと思っています。

または 私のjsonファイルは次のようになります。

 {
    "bw/":"main()",
    "bw/login":"login()"

}
 

私のloadPage関数は次のようになります。

 function loadPage($url){ //$url = 'bw/'
    $str = file_get_contents('urls.json');
    $this->link = json_decode($str, true);
    $url = ltrim($url,"/");
    $key = $this->link[$url];
    eval("$key;");
}
 

編集: 私は自分のコードで$ this->リンクを定義しました

  ベストアンサー

関数を動的に呼び出すことを可能にするためにJSONにわずかに微調整すると、括弧を削除するだけで、次のようになります。

 {
    "bw/":"main",
    "bw/login":"login"

}
 

そしてそれを使って呼び出す...

 function loadPage($url){ //$url = 'bw/'
    $url = ltrim($url,"/");
    $key = $this->link[$url];
    $key();
}
 

  同じタグがついた質問を見る

phpeval