Asset Helper и защищенный просмотр _скриптов в CakePHP 2.0

После обновления до 2.0 многие "хаки", такие как доступ к защищенным атрибутам, больше не возможны.

Например (AssetHelper):

$scripts = $this->View->_scripts;
//pack and return combined scripts

Помощник фатальных ошибок, конечно. Кто-нибудь знает, как получить доступ к этим атрибутам в 2.0, не создавая слишком много накладных расходов в процессе? Являются ли AssetHelper и другие подобные классы устаревшими, если они пытаются получить доступ к представлению из помощника?

1 ответ

Решение

Новый способ доступа к представлению из помощника в 2.0 $this->_View который защищен. Вы можете увидеть это на странице Helper API.

Я посмотрел AssetHelper на Github, и он устарел. Он по-прежнему извлекает вид из ClassRegistry вместо нового метода. Он также получает доступ к __scripts атрибут старого класса 1.3 View, который на самом деле не был "закрытым". Я думаю, вы правы, что изменение в реальных декларациях видимости нарушило это использование.

Просто мозговой штурм, но мне интересно, не могли бы вы сделать свой собственный класс View, который имеет геттер для _scripts атрибут как $this->_View->getScripts(), Я знаю, что в 2.0 они добавили отличную возможность для псевдонимов основных классов; хотя я думаю, что это ограничено помощниками, компонентами и поведением, это то, о чем нужно подумать.

Надеюсь, это поможет.

Другие вопросы по тегам