了解通知
该消息意味着正在设置一个使用魔法访问器访问的属性 - 它实际上不会做任何事情。它等价于:
<?php
class Foo {
function __get($prop) {
return [];
}
}
$foo = new Foo;
$foo->bar['zum'] = "x";
print_r($foo->bar); // []
在这个人为的示例中,属性“bar”不存在,因此调用了魔术 getter,返回一个空数组 - 代码试图附加/写入这个魔术 getter-returned-value 并发出相同的通知:
注意:间接修改重载属性 Foo::$bar 在第 12 行的 /tmp/overload-example.php 中无效
如print_r
调用所示, 的值$foo->bar
没有改变。
正常的解决方案是声明属性,以便不使用魔法吸气剂,即:
class Foo {
public $bar = []; // Now it can be modified.
但是,在这种情况下,这不是最合适的做法。
助手从 1.x 更改为 2.x
在迁移指南中的2.x 中更改了所有助手的构造函数。详细阅读迁移指南,尤其是在遇到问题时。
在 1.3 中,所有助手都扩展了助手类,它没有构造函数,并且不保留对视图的引用。在 2.x 中,所有助手都扩展了同一个类,但确实有一个构造函数并保留了对视图类的引用。有 2 个步骤与此错误相关,可将帮助程序升级为 2.x 兼容
更改构造函数:
无需重复父构造函数为您执行的逻辑,因此只需调用__loadHooks
(如有必要):
function __construct(View $View, $settings = array()) {
$this->__loadHooks();
return parent::__construct($View, $settings);
}
将引用更改为$this->View
所有助手都可以访问视图实例,只需在您的助手代码中查找并替换即可:
$this->_View
有了这个:
$this->View