问题是这样的
我使用 Docker php:apache 7.2.5 在本机上开发,没有问题
但在 CentOS 7 上安装 PHP 7.2.5 却出现了
Indirect modification of overloaded property 错误
这个错误在 Stack Overflow 上有解法 https://reurl.cc/lKXq
就是在 magic method __get 前加上 & 变成 &__get 解决
但仍然不解的是到底哪里造成的差异,让 CentOS 上会出错 Docker 却不会
事实上也有人回应,在 codepad 上也不会看到错误
求解,感谢
@JustGame
CentOS 的 php.ini
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
Docker 的 php.ini
error_reporting 无值(no value)
display_errors = Off
感谢,一语惊醒梦中人
我去查了 PHP 官方文件,当 error_reporting 无值的时候默认值是
E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
所以把 CentOS 的 PHP 改成 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
结果就一致了,但忽略 Notice 好像不是个好习惯,我会再想办法解决
@shvanta
回传的确是包著 Object 的 Array 没错,我的确也是期望它能修改原本的 Object 内容
理论上它应该只改到复本不应影响本体(正确的名词应该是什么...)
但实际上,它虽然有跳 Notice 但还是改了本体的内容了!!!
这算是 bug 吗?还是有哪里误会了