Понимание уведомления
Сообщение означает, что устанавливается свойство, доступ к которому осуществляется с помощью магического средства доступа — на самом деле оно ничего не сделает. Это эквивалентно этому:
<?php
class Foo {
function __get($prop) {
return [];
}
}
$foo = new Foo;
$foo->bar['zum'] = "x";
print_r($foo->bar); // []
В этом надуманном примере свойство «bar» не существует, и поэтому магический геттер вызывается, возвращая пустой массив — код пытается добавить/записать это магическое-геттер-возвращенное-значение и выдает такое же уведомление:
Примечание. Косвенное изменение перегруженного свойства Foo::$bar не влияет на /tmp/overload-example.php в строке 12.
Как видно из вызова 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
Все помощники имеют доступ к представлению instance, просто найдите и замените в своем вспомогательном коде это:
$this->_View
С этим:
$this->View
person
AD7six
schedule
23.09.2015