动态PHP对象访问在本地和服务器上有所不同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态PHP对象访问在本地和服务器上有所不同相关的知识,希望对你有一定的参考价值。
在本地XAMPP开发环境中,我可以通过调用:$xmltemplates->$_POST['xmlmap']->sheet;
来访问php中的对象属性
但是在实时服务器上,我必须将POST变量放入一个字符串中,以便它可以工作:
$gehmiraufdiekeks = $_POST['xmlmap'];
$xmltemplates->$gehmiraufdiekeks->sheet;
我是否需要修复代码或者是服务器配置问题?
更新:我期望XAMPP测试环境至少是7个。所以我只检查了服务器的PHP版本,即7个。但是当我加倍检查两个PHP信息时,我的本地PHP版本是5.6。 D'哦!所以有这种问题的人:请将您的代码更新为PHP 7.;)
答案
两件事情:
- 配置(或应该)生产服务器以隐藏错误消息。这就是你没有得到的原因。您需要检查服务器日志或启用完整错误报告。
- 我理解你指的是在不使用花括号的情况下调用变量属性,如:
$key = 'bar'; var_dump($foo->$bar);
... 而不是:var_dump($foo->$bar);
这在PHP / 7.0迁移指南(强调我的)的Changes to the handling of indirect variables, properties, and methods部分中进行了解释: 现在,将严格按照从左到右的顺序对间接访问变量,属性和方法进行评估,而不是之前的特殊情况组合。 [...] 必须重写使用旧的从右到左评估顺序的代码,以明确使用带花括号的评估顺序(请参阅上面的中间列)。这将使代码向前兼容PHP 7.x并向后兼容PHP 5.x.
另一答案
实际上,这是与PHP版本相关的。他们在PHP 7中对此进行了更改,因此没有人可以通过POST表单发送失败的非转义字符串来破坏您的脚本。
以上是关于动态PHP对象访问在本地和服务器上有所不同的主要内容,如果未能解决你的问题,请参考以下文章