2011-01-18

Множественные формы в Yii

Да, вам не показалось, в этот раз речь пойдет о PHP фреймворке Yii. И да простит меня домен третьего уровня... :)

Когда я работал с Zend Framework, мне очень понравилась их реализация множественных форм, о которых я уже когда-то рассказывал. Перейдя в свое время на Yii, я огорчился, узнав, что там подобной удобностью и не пахнет. Нет, я, разумеется, знал про CChoiceFormat, который позволял использовать множественные формы примерно следующим образом:

CChoiceFormat::format('n%10==1 && n%100!=11#раз|n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20)#раза|#раз', $data->views);

Но согласитесь, это ни разу не эстетично. И этой записи не было бы, если бы не случился выход Yii 1.1.6, в котором и появилась долгожданная и аккуратная, прописанная в файлах интернационализации, поддержка множественных форм. Теперь и в Yii все стало куда симпатичнее и "правильнее". Аналог вышеописанного использования теперь выглядит так:

Yii::t('yii', 'раз|раза|раз', $data->views);

Приятного вам кодинга! :)

2011-01-15

Очередные приколы imagick в PHP под Windows

Вроде бы ничего не предвещало беды, я уже рассказывал о своих похождениях с imagick под Windows. Но в нынешних проектах у моих коллег начали возникать проблемы с неработоспособностью этого расширения. Решив обновить всю свою сборку до актуальных версий, я столкнулся с аналогичными проблемами: 

Premature end of script headers, 500 ошибка возврата от Apache.

Проколупавшись в итоге несколько часов, я набрел на интересный комментарий на блоге Mikko. Для тех, кто не знает английский — с тех пор как ImageMagick (собственно, сам движок обработки изображений) стал собираться в Visual Studio 2010 (компилятором VC10), под PHP в Windows у всех проблемы. Последняя работоспособная версия ImageMagick, собранная VC9 — 6.6.4-1. Ее вы можете скачать по этому адресу:

http://image_magick.veidrodis.com/image_magick/binaries/ImageMagick-6.6.4-1-Q16-windows-dll.exe

Удалите все другие, установленные у вас версии и установите эту. Если вы разрабатываете на PHP в Windows, другие версии вам и не понадобятся. Но если вам вдруг потребуется какая-нибудь иная версия из архивов, то поищите ее по следующему адресу:

http://image_magick.veidrodis.com/image_magick/binaries/

В этот раз у меня был установлен PHP 5.3.5 non thread safe (VC9, x86) и аналогичное расширение imagick non thread safe (VC9, x86). Apache работал в режиме FastCGI. Больше ошибок с 500 статусом по поводу imagick у меня не возникает.

Так и в этот раз я победил imagick. :)