Смотрю я теперь на исходный код Zend_Controller_Front , Zend_Controller_Action, Zend_View, а также на Zend_View_Abstract у Zend Framework версии 1.7.3, чтоб понять, как в них обстоят дела с encoding.
Продолжая тему MySQL + PHP: charset и collation и правильные мысли и изучение векторов, которые подкинул Алексей Захлестин, я наткнулся на замечательный private член класса Zend_View_Abstract под названием $_encoding, со значением ISO-8859-1. Так-же в этом классе я нашёл как в Zend_View_Abstract устроен метод escape. Этот $_encoding на него влияет, так как в методе escape он является третьим параметром к функциям htmlspecialchars или htmlentities (какую из них использовать вы тоже можете настроить).
Вот смотрю я на их исходный код и понять не могу, как нормальным и безболезненным способом в объект Zend_View передать мне нужный encoding? Везде в уроках по Zend Framework можно увидеть, как во всех View используют строку <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ /> или соответствующую строку из helpers API у Zend_View, но я нигде не замечал как сменить внутреннюю настройку. Ну, кроме наисложнейших манипуляций со всей иерархией bootsrap, ведь есть замечательный helper Zend_View_Helper_Doctype.
Ведь, если бы была единая настройка encoding для всех компонентов Zend Framework, как бы было удобно и не возникала таких проблем, как были у нас. Разработчикам не нужно было-бы думать о том, в каком encoding у них клиент для работы с базой данных, в каком encoding у них страницы, в каком encoding у них остальные используемые компоненты Zend Framework — обо всём позаботились бы в одном месте и сразу.
Может я чего упустил — ткните в соответствующий урок или страницу мануала.
вроде там у вью есть такой метод setEncoding разве нет?
настройка должна быть для всех компонент отдельно, потому что они никак не связаны
Спасибо за совет.
Да, есть. У Zend_View он есть и я его уже использую (можно сказать давно).
У Zend_DB тоже можно указать charset для соединения, по крайней мере для PDO_MYSQL драйвера, причём через конфиг (что несомненно огромный плюс).
Да, ты в принципе прав, Zend_DB и Zend_View отдельные компоненты. Но! Я их слишком часто использую вместе, когда строятся страницы сайта и очень хочется иметь одно место, где устанавливать одну настройку на все включённые в проект компоненты которые зависят от кодировки/энкодинга, а не бегать и выделываться делая это не всегда верно (особенно если ты новичёк при работе с Zend Framework).
От части эту проблему решает Zend_Bootstrap и их application.ini, которые появились в версии 1.8. Они решают довольно много проблем, которые возникали до этой версии, чему я очень рад.