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 они добавили отличную возможность для псевдонимов основных классов; хотя я думаю, что это ограничено помощниками, компонентами и поведением, это то, о чем нужно подумать.
Надеюсь, это поможет.