PHP5.2中的语法错误
在PHP5.3中,我可以使用类名作为变量,也可以调用静态变量PHP5.2中的语法错误,php,Php,在PHP5.3中,我可以使用类名作为变量,也可以调用静态变量 $class_name = 'Test'; $class_name::$static_var; 如何在PHP5.2版本中调用它 Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in ... T_PAAMAYIM_NEKUDOTAYIM是PHP使用的双冒号范围解析-:: 你可以试试这个 $class_name='Test'$class_name->$stati
$class_name = 'Test';
$class_name::$static_var;
如何在PHP5.2版本中调用它
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in ...
T_PAAMAYIM_NEKUDOTAYIM是PHP使用的双冒号范围解析-:: 你可以试试这个
$class_name='Test'$class_name->$static_var @user762799以下是您希望在PHP5.2中实现的解决方案
class Sample{
public static $name;
public function __construct(){
self::$name = "User 1";
}
}
$sample = new Sample();
$class = 'Sample';
$name = 'name';
$val_name = "";
$str = '$class::$$name';
eval("\$val_name = \"$str\";");
//echo $val_name."<br>";
eval("\$name = $val_name;");
echo $name;
类示例{
公共静态名称;
公共函数构造(){
self::$name=“用户1”;
}
}
$sample=新样本();
$class='Sample';
$name='name';
$val_name=“”;
$str='$class::$$name';
eval(\$val\u name=\“$str\”;”);
//echo$val_name.“
”;
评估(\$name=$val\u name;);
echo$name;
PAAMAYIM_NEKUDOTAYIM表示范围解析运算符(:)
实际上,在您的代码中,PHP无法在$class\u name
的范围内识别$static\u var
,这就是发生错误的原因
如果你还不清楚,请告诉我。谢谢:)您真的应该更新您的PHP版本,5.2不再受支持,但是 。。。在PHP5.2中,解决这个问题的唯一方法是使用
eval
:
$return = eval($class_name . '::\\$static_var;');
但是,在使用此功能之前,请确保验证
$class\u name
,否则可能会插入任意代码(例如$class\u name='do\u bad\u things();class\u name
)。您可以参考以下链接来完成任务。或者这会对你有帮助。。谢谢。那{$class\u name}:{$static\u var}
呢?