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. лцфNo Gravatar

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

  2. Сергей КуракинNo Gravatar Post author

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

    Да, есть. У 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.