Zend_View и encoding

Смотрю я теперь на исходный код 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 — обо всём позаботились бы в одном месте и сразу.

Может я чего упустил — ткните в соответствующий урок или страницу мануала.

2 thoughts on “Zend_View и encoding

  1. вроде там у вью есть такой метод setEncoding разве нет?
    настройка должна быть для всех компонент отдельно, потому что они никак не связаны

  2. Спасибо за совет.

    Да, есть. У Zend_View он есть и я его уже использую (можно сказать давно).

    У Zend_DB тоже можно указать charset для соединения, по крайней мере для PDO_MYSQL драйвера, причём через конфиг (что несомненно огромный плюс).

    Да, ты в принципе прав, Zend_DB и Zend_View отдельные компоненты. Но! Я их слишком часто использую вместе, когда строятся страницы сайта и очень хочется иметь одно место, где устанавливать одну настройку на все включённые в проект компоненты которые зависят от кодировки/энкодинга, а не бегать и выделываться делая это не всегда верно (особенно если ты новичёк при работе с Zend Framework).

    От части эту проблему решает Zend_Bootstrap и их application.ini, которые появились в версии 1.8. Они решают довольно много проблем, которые возникали до этой версии, чему я очень рад.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.