0

次のようにクラス名とIDを受け入れるdelete.phpページを作成しました。

if(isset($_GET['id']) && is_numeric(trim($_GET['id'])) ) {
    $id = $_GET['id'];
}
else{
    redirect_to($back);
}   
if(isset($_GET['cls'])  && class_exists($_GET['cls']) ) {
    $class = $_GET['cls'];
}
else {

    redirect_to($back);
}

次に、オブジェクトを作成し、そのdeleteメソッドを呼び出します。

$object = $class::find_by_id($id);
$object->delete();

私のローカルホスト(wampサーバー)では正常に動作しています。ただし、ホスト(php 5.2)にアップロードすると、静的関数$ class :: find_by_id($ id)を呼び出した行でこのエラーが発生します。解析エラー:構文エラー、予期しないT_PAAMAYIM_NEKUDOTAYIM。どうすればこの問題を解決できますか?

4

1 に答える 1

2

2つの異なるバージョンのPHPを扱っている可能性があります。WAMP$class::find_by_id($id)は許可されている場合は5.3に同梱されていますが、PHP5.2はそれを好みません。

代わりにこれを試してください:

$object = call_user_func(array($class,'find_by_id'),$id);

それが機能しない場合(そしてなぜ機能しないのかわかりません)、いつでもevalを使用できます(evalが悪い場合でも):

eval("\$o=$f::find_by_id(\$id);");

もちろん、最善の解決策はサーバー上でPHP> = 5.3にアップグレードすることですが、それを制御できない場合があります。

于 2013-03-09T17:30:56.610 に答える