Cakephp 注意(8):间接修改重载属性LayoutHelper::$View无效[APP/View/Helper/LayoutHelper.php,第48行]

Cakephp 注意(8):间接修改重载属性LayoutHelper::$View无效[APP/View/Helper/LayoutHelper.php,第48行],cakephp,cakephp-2.x,Cakephp,Cakephp 2.x,在将CakePHP代码从1.3迁移到2.x的过程中,我收到了以下通知:- 注意(8):间接修改重载属性LayoutHelper::$View无效[APP/View/Helper/LayoutHelper.php,第48行] 本通知的代码为:- function __construct($options = array()) { $this->View =& ClassRegistry::getObject('view'); $this->__loadHooks

在将CakePHP代码从1.3迁移到2.x的过程中,我收到了以下通知:-

注意(8):间接修改重载属性LayoutHelper::$View无效[APP/View/Helper/LayoutHelper.php,第48行]

本通知的代码为:-

function __construct($options = array()) {
    $this->View =& ClassRegistry::getObject('view');
    $this->__loadHooks();

    return parent::__construct($options);
}
我该怎么做才能解决这个问题?

理解通知 这个消息意味着正在设置一个属性,该属性是通过一个神奇的访问器访问的——它实际上不会做任何事情。这相当于:

<?php

class Foo {
        function __get($prop) {
            return [];
        }
}

$foo = new Foo;
$foo->bar['zum'] = "x";
print_r($foo->bar); // []
然而,在这种情况下,这不是最合适的做法

助手从1.x更改为2.x 在2.x中,所有帮助程序的构造函数都发生了更改,即。请详细阅读迁移指南,尤其是遇到问题时

在1.3中,所有帮助程序都是扩展的,它没有构造函数,也不保留对视图的引用。在2.x中,所有帮助程序都扩展了相同的类,但是。要将帮助程序升级为2.x兼容,有两个步骤与此错误相关

更改构造函数: 无需重复父构造函数为您执行的逻辑,因此只需调用
\uuu loadHooks
(如有必要):

将引用更改为
$this->View
所有帮助者,只需在帮助者代码中查找并替换以下内容:

$this->_View 
为此:

$this->View 

“我应该怎么做才能解决这个问题?”-开始使用搜索功能?这已经被问了几千次了。只需搜索错误消息。你不太可能是第一个遇到它的人。可能是@burzum的复制品没有帮助。
$this->_View 
$this->View