属性值作为类名给出错误

时间:2013-03-09 17:28:02

标签: php error-handling version

我创建了delete.php页面,它将接受类名和ID,如下所示:

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);
}

然后我将创建一个对象并调用其删除方法:

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

它在我的localhost(wamp服务器)上工作正常。 但是,当我将它上传到我的主机(PHP 5.2)时,它在线上给我这个错误,我调用了静态函数$ class :: find_by_id($ id): 解析错误:语法错误,意外T_PAAMAYIM_NEKUDOTAYIM。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您可能正在处理两种不同版本的PHP。 WAMP附带5.3允许$class::find_by_id($id),另一方面PHP 5.2不喜欢它。

请改为尝试:

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

如果这不起作用(我不明白为什么它不会),你总是可以使用eval(即使eval很糟糕):

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

当然,最好的解决方案是在您的服务器上升级到PHP> = 5.3,但您可能无法控制它。