суббота, 21 июля 2012 г.

Autoload, APC, Стабилизация PHP-5.4

Ведущий мантейнер dev-lang/php пишет php-5-4-about-to-be-stabilised в своем блоге о стабилизации в дереве портов пакета версии PHP-5.4.
Одна из причин, почему это не происходит: задержки в выходе «кэшера» APC для PHP-5.4, довольно востребованного расширения. Расширение еще не стабилизировано для этой версии PHP и неизвестно хотя-бы приблизительно, когда будет релиз. Пока автор рекомендует пользоваться XCache. Примерно такая-же ситуация с наборами патчей безопасности Suhosin

На мой взгляд, APC действительно востребован. Фактически это хорошая opensource-замена многим продуктам zend.com, zend guard, zend encoder, ioncube и им подобных. На страничке данного расширения можно видеть, что последние версии вышли довольно недавно, но в статусе бетты. Последний стабильный релиз был в середине мая 2011 года. Среди разработчиков расширения, можно заметить Расмуса и других хорошо известных личностей. Это обнадеживает, что скоро стабилизация APC произойдет. Просто разработчики скорее всего были заняты доводкой PHP-5.4 весь период 2011-2012 гг.
Причем судя по коммитам в http://svn.php.net/viewvc/pecl/apc/trunk/ (странно однако, почему они сидят на древнем svn-не, а не на git-е), Расмус ведет самое активное участие в доводке APC. Читайте статью Расмуса про кеширование и ускорение php-приложений и вообще http://talks.php.net/show/w2e09

APC и другие «кэшеры» не решают архитектурные проблемы приложения. Для ускорения работы php-приложений без APC можно использовать следующий подход (паттерн). Первый оператор Вашего приложения это include 'autoload.php' в index.php. В autoload.php Вы объявляете лучше статичный класс примерно так


Еще одно немаловажно правило. Теперь все запросы на поиск файла в котором содержится искомый класс, будут приходить сначала сюда... Поэтому рекомендуется убрать везде, где можно в проекте include*, require* и добавить все классы проекта, которые планируется использовать. Несколько классов содержащихся в одном файле нужно добавить явно, как будто они находятся в разных файлах.

Данный пример подходит для небольших проектов и библиотек с небольшим числом классов. Для более удобного применения, необходимо добавить метод что-то типа Autoload::provideClasses(...)

PHP, gentoo, portage, tree, blog, APC, Xcache, production, dev-lang/php, Suhosin, PHP-5.4., 5.4, 5.3+, patch, security, development, stable, stabilisation, пакет, стабилизация, безопасность, cache, кэш, ebuild, extension, pecl, расширение, class, autoload, spl, spl_autoload_register, debug, namespace, path, include, require, example, solution, performance, Rasmus, pattern, zend, encode, ioncube, zend guard, alternative, encoder, code




четверг, 12 июля 2012 г.

Начальные материалы про PHP 5.5


Появились первые спецификации и обсуждения PHP 5.5 в статусе предложений.

Кратко:
Насчет generators очень заманчиво, хотя это из-за сильного влияния в мире python и всеобщего движения в сторону функционального программирования... Но пока в PHP не появятся классические списки и кортежи, реализация генераторов может быть неудобной или запутанной.
Не хватит скобок банально ;) Сделают списки, обострится проблема типизации и дискуссии типа зачем кортежи??? В общем деликатная тема...
Однако, подробности:
http://news.ycombinator.com/item?id=4234117
http://nikic.github.com/2012/07/10/What-PHP-5-5-might-look-like.html
https://wiki.php.net/rfc/propertygetsetsyntax-as-implemented

Как всегда есть здравые идеи, но и заумных хватает: на то оно и rfc

Лично для меня, очень удобными, сейчас, в 54 выглядят пока: traits, замыкания с контекстами this, короткий синтаксис массивов, LSB, php-fpm, (new Foo)->bar()[0];




АХТУНГ!


Разработка и развитие генту всегда на высоте, не стоят на месте и сопровождаемые пакеты php.

Я к тому, что ряд статей (примерно до 2011 г.) в этом блоге устарели и могут быть полезны только в познавательных целях или для очень давно не обновляемых серверов с генту.

Сейчас 53 достаточно стабилен и установка достаточно тривиальна.

Смотрите руководства по установке/обновлению php на сайте gentoo.org (ссылки на документацию есть в этом блоге)

Статьи на сайтах gentoo-wiki также выглядят устаревшими. Лично мое мнение: надо использовать в полный рост PHP 5.4 и готовиться к PHP 5.5+