Дайджест интересных новостей и материалов из мира PHP за последние две недели №20 (18.06.2013 — 30.06.2013)
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
PHP 5.5
Состоялся долгожданный релиз PHP 5.5![1] — Небольшой обзор новых возможностей есть в хабрапосте[2] , а также тут[3] и тут[4].
Согласно принятому ранее решению[5], ветка 5.3.x закрывается. Последним регулярным релизом станет 5.3.27. В течение года при необходимости будут выпускаться исправления проблем с безопасностью, после чего поддержка 5.3 будет приостановлена окончательно.
Новые возможности в PHP 5.5[9] — Никита Попов собрал все самые значимые по его мнению нововведения в удобной таблице с обозначением автора и ссылками на соответствующие RFC.
API хэширования паролей[10] — Об этом уже писал[11] не раз даже сам автор API, но за хороший хабрапост на русском — спасибо!
Как быть с 5.4 и 5.3?[12] — Релиз-менеджер PHP 5.3 рекомендует счастливым и не желающим что-либо менять пользователям версии 5.3 продолжать пользоваться ею лишь вовремя устанавливая обновления этой ветки. Пользователям же PHP 5.4 автор рекомендует обновиться до 5.5.
Новая константа CLASS[13] — В посте пример того, где действительно необходимо использование новой константы. Кроме того несколько примеров «из жизни» есть в оригинальном RFC[14].
Практическая польза генераторов из PHP 5.5[16] — Автор реализовал аналог функции range() с использованием генератора, и демонстрирует насколько это сократило потребление памяти.
Новости и релизы
Вышел WordPress 3.5.2[17] — В релиз включены важные исправления безопасности, всем пользователям настоятельно рекомендуется обновиться немедленно.
Вышел Codeception 1.6.3[18] — Релиз отличного инструмента тестирования. Хоть и минорный, но содержит несколько приятных нововведений, таких, например, как модуль для Yii 2 и Facebook-модуль.
Релиз PHP QB 1.3[19] — Обновилась альтернативная виртуальная машина для PHP, которая благодаря статической типизации позволяет для ряда специфических задач получить значительный прирост в производительности.
Быстрый поиск по дайджестам[20] — Небольшой инструмент, который позволяет искать сразу по всем PHP-дайджестам, публиковавшимся на Хабре. Делал для себя, но думаю будет полезен многим, например, если нужно быстро найти все статьи по интересующей теме.
PHP
PHP Internals Book: Hashtables[21] — Новая глава книги посвящена хэш-таблице — структуре данных, которая повсеместно используется в реализации интерпретатора.
RFC: Поддержка анонимных catch-блоков[22], Structural Type Hinting[23] — Не смотря на то, что новая версия PHP только вышла, уже появляются предложения для грядущих версий. Пока не революционные, но посмотрим, что будет дальше.
Упаковываем Sуmfony-приложение в один файл — продолжение[26] — Если в предыдущем посте[27] Fabien писал о причинах и мотивах побудивших его упаковать приложение в один файл, то в этот раз он приступил к реализации задуманного. Но стоит заметить, что упаковано в один файл будет только приложение, а код фреймворка и инструментов останется в папке vendor.
Разбираемся с потоками данных в PHP[29] — Многие разработчики игнорируют потоки данных[30], однако этот мощный инструмент часто может очень облегчить жизнь. Пост будет хорошей отправной точкой для тех, кто решил разобраться с потоками. Также имеются хорошие слайды по потокам[31].
Уведомления на рабочем столе Ubuntu для PHPUnit-тестов[32] — Автор предлагает не смотреть в консоль ожидая окончания тестов, а настроить уведомления на рабочем столе которые бы сигнализировали о статусе процесса тестирования. Приведено решение для Ubuntu, но используя Growl[33] можно сделать тоже самое для OS X и Windows.
Видео туториалы по PhpStorm[37] — Почти 2 часа скринкастов, в которых раскрыты как базовые возможности IDE, так и некоторые продвинутые варианты использования.
Кроме того рекомендую ознакомиться с полезным хабрапостом[38] , в котором описано как включить автодополнение SQL-кода прямо в редакторе.
Погружаемся в Symfony 2[39] — Небольшой пост, который станет хорошим началом для желающих освоить фреймворк.
Обновление PHP сломало мой импорт данных[40] — Автор пишет о проблеме, с которой столкнулся при обновлении с PHP 5.3 до 5.4 — нельзя так просто взять и использовать LOAD DATA INFILE, но автор нашел обходное решение.
От процедурного к объектно-ориентированному PHP[41] — Большой туториал, в котором на примере простого клиента Google API обоснован и пошагово продемонстрирован переход от процедурного к объектно-оринтированному подходу.
Интервью с Phil Sturgeon[42] — О своем опыте как разработчика рассказывает автор PyroCMS, участник PHP-Fig, ранее контрибьютор в CodeIgniter и FuelPHP, а ныне в Laravel.
Основы использования Arduino из PHP[43] — Автор пишет о протоколе Firmata[44] и об использовании PHP-библиотек, реализующих ассинхронный ввод/вывод, например React[45]. Автор реализовал собственную подобную библиотеку — Carica Io и приводит пример ее использования.
Google App Engine и мольба о Phalcon[46] — Пост содержит небольшой обзор GAE, немного информации и рекомендаций по переходу от обычного хостинга[47] на GAE и рассуждения на тему недоступности расширений. «Phalcon больше PHP6 чем сам PHP6» — пишет автор и просит проголосовать поставив звездочку за соответствующий запрос о новой возможности для GAE[46].
Структуры данных для PHP-разработчиков[50] — В первом посте из серии речь идет о стэке и очереди. Базовые сведения, пример реализации соответствующих объектов на PHP и немного о встроенной реализации из SPL. Пост будет полезен молодым разработчикам и тем, кто только начинает.
Единое расположение ресурсов в PHP[53] — Автор описал в посте преимущества указания расположения ресурсов в едином формате и сделал предложение[54] в PHP-FIG для утверждения в качестве стандарта. Ресурсом в данном случае может быть файл шаблона, конфигурационный файл, изображение и т.п.
Ускорьте ваше PHP-приложение с помощью OpCache[56] — Если хотите использовать OpCache но обновляться до 5.5 пока не желаете, то для вас эта небольшая инструкция по установке и настройке расширения.
Обратная совместимость — для неудачников[57] — Anthony Ferrara, core-разработчиков PHP считает, что если одной из целей вашего проекта декларируется обратная совместимость, то вы — неудачник. Он также призывает больше думать о прямой совместимости, то есть стараться предусмотреть возможные изменения.
Обзор PuPHPet[62] — О сервисе PuPHPet, который позволяет быстро и очень просто виртуализировать вашу рабочую среду, уже не раз было написано в дайджесте. По ссылке пост с небольшим обзором. Также можно ближе познакомиться с Vagrant и Puppet тут[63], и глянуть хорошие слайды по Vagrant тут[64].
Http запросы — мы все это делаем неправильно[65] — Хороший хабрапост, в котором автор указывает на типичную ошибку создателей библиотек — они игнорируют возможность установить постоянное HTTP-соединение.
Обзор Symfony 2[71] — Видеозапись доклада о внутренностях фреймворка и принципах положенных в его основу.
Фреймворк — это не архитектура[72] — Видеозапись доклада, в котором рассказано почему ваш любимый фреймворк не предоставляет архитектуры приложения и какие это имеет последствия.
Devconf 2013[73] — На сайте конференции стали доступны ссылки на слайды докладов, в том числе и по PHP.
PHP Object Injection Revisited[74] — Отличная презентация по безопасности десериализации данных в PHP с прошедшей не так давно в Кракове конференции CONFidence[75].
[22] Поддержка анонимных catch-блоков: https://wiki.php.net/rfc/anonymous_catch
[23] Structural Type Hinting: https://wiki.php.net/rfc/protocol_type_hinting
[24] Сделать Phalcon еще быстрее — разве это возможно? Да!: http://blog.phalconphp.com/post/53713853781/making-phalcon-even-faster-is-that-possible-yes
[25] оптимизации основанной на данных профилирования: http://ru.wikipedia.org/wiki/Profile-guided_optimization
[26] Упаковываем Sуmfony-приложение в один файл — продолжение: http://fabien.potencier.org/article/70/packing-a-symfony-full-stack-framework-application-in-one-file-bootstrapping
[56] Ускорьте ваше PHP-приложение с помощью OpCache: http://fideloper.com/install-zend-opcache
[57] Обратная совместимость — для неудачников: http://blog.ircmaxell.com/2013/06/backwards-compatibility-is-for-suckers.html
[58] Как использовать Propel в Laravel 4: http://picqer.com/blog/propel-with-laravel
[59] Propel: http://propelorm.org/
[60] Операторы, работающие с массивами: http://phpmaster.com/array-operators-in-php-interesting-but-less-spoken/
[61] Проблема инициализации объектов в ООП приложениях на PHP. Поиск решения при помощи шаблонов Registry, Factory Method, Service Locator и Dependency Injection: http://habrahabr.ru/post/183658/
[65] Http запросы — мы все это делаем неправильно: http://habrahabr.ru/post/184302/
[66] Lone Star PHP 2013: https://joind.in/event/view/1350/slides#event-tabs
[67] конференции: http://lonestarphp.com/
[68] Внедрение зависимости и DI-контейнеры: http://gonzalo123.com/2013/06/24/talk-about-dependency-injection-and-dependency-injection-containers-at-the-desymfony-2013-conference/