Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013)
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
Zend Optimizer+ возможно будет включен в PHP 5.5[1] — Неожиданная новость о том, что в ближайший релиз PHP может быть включено расширение для кэширования опкода. Подобные предложения звучали не раз, и естественным кандидатом считался APC. Но Расмус Лердорф[2] и другие core-разработчики не раз говорили о том, что APC еще не достиг стабильной стадии и содержит слишком много ошибок, чтобы быть включенным в PHP. И вот Зеев Сураски,[3] отвечая на вопрос в php-internals[4], говорит о возможности открытия исходного кода Zend Optimizer+ и включении его в PHP 5.5. Однако по текущему плану релизы альфа-версий не планировались, а значит и новых возможностей не ожидалось, но сообщество восприняло такую новость не без энтузиазма и есть шансы, что расширение все-таки попадет в 5.5. Опубликованный документ RFC кроме всего прочего содержит сравнение Optimizer+ с APC. Предположительно на голосование будет вынесено три возможных сценария: 1. Интегрировать Optimizer+ в PHP 5.5.0 с задержкой релиза до 2 месяцев; 2. Интегрировать Optimizer+ в PHP, не задерживая релиз 5.5; 3. Не интегрировать Optimizer+ в PHP, предоставляя его как опциональный компонент доступный из PECL.
В свет вышли Zend Framework 2.0.7, 2.1.0[5] и сразу 2.1.1[6] — Если версия 2.0.7 это хоть и внушительный, но все-таки набор исправлений[7], то релиз 2.1.0 содержит множество нововведений, включая новые компоненты для работы с push-уведомлениями для iOS и Android устройств. Ну а 2.1.1 вносит ряд исправлений.
Анонсирован стабильный релиз MySQL 5.6[8] — С момента выхода предыдущей версии прошло 2 года, и этот долгожданный релиз содержит множество нововведений и улучшений, особенно коснувшихся производительности. Примечательно, что немногим ранее Fedora и openSUSE заявили о намерении[9] заменить MySQL на MariaDB в установке по умолчанию.
11й выпуск журнала Web & PHP[10] — В свежем выпуске журнала раскрыты следующие темы: PHP в облаке; Развитие Agile ; Индексирование баз данных; и другие.
PHP 6 Pissing in the Wind[13] — Отличнейший пост, в котором автор высказывает свою точку зрения по поводу сложившейся обстановки в PHP сообществе. Он приводит пример проблем в языке, которые постоянно ставятся в укор PHP-ненавистниками, а именно: несогласованность параметров, отсутствие скалярных объектов[14] и поддержки юникода. Сначала автор приводит очевидное, по его мнению, решение, а затем пишет о том, почему же все-таки изменения не вносятся. Он считает, что среди core-разработчиков слишком много консервативно-настроенных личностей, и голосования по сколько-нибудь серьезным изменениям чаще всего проваливаются, как это было, например, с аксессорами[15]. Автор призывает к прогрессивным изменениям, а тех, кто не хочет работать над такими изменениями, призывает отойти от дел. Не менее интересными стали комментарии к посту, например подробный ответ от Зеева Сураски.
PHP все растет и растет[16] — Опубликованы результаты исследования данных об использовании PHP за последние 10 лет. Заголовок поста как бы намекает. Кроме описания использованных метрик и особенностей оценки пост также содержит краткую историю языка PHP.
Функциональное программирование на PHP[17] — В прошлом выпуске упоминался оригинал, в котором подробно описано текущее состояние реализации функциональной парадигмы в языке PHP, приведен пример использования подсчета общей стоимости корзины покупок в функциональном стиле. На этот раз вашему вниманию хабраперевод.
Типажи в PHP: хорошо это или плохо?[18] — Типажи — это конечно же трейты. Именно о них перевод статьи, в которой рассмотрены достоинства и недостатки новой возможности языка PHP.
Материалы для обучения
Советы по прохождению Zend сертификации[19], 2[20] — Интервью с одним из создателей PHPBenelux[21] — Michelangelo van Dam и просто известной блоггершей Lorna Jane Mitchell, в которых они делятся полезными советами и рекомендациями по прохождению сертификаций от Zend, отвечая на вопросы: стоит ли проходить? как готовиться? на что обратить внимание? и многие другие.
Тестируем сериализацию на PHP[22] —Задача сериализации данных возникает очень часто, например, при реализации кэширования. И, очевидно, что кодирование информации занимает какое-то время. В статье автор описал результаты тестирования с помощью встроенных методов serialize/unserialize, с помощью расширения igbinary[23], а также кодирование в JSON-строку.
Laravel 4: Создаем RESTful API[24] — Хотя Laravel 4 еще в бете, но уже имеется множество материалов по этому фреймворку. В данном туториале описано построение RESTful API на примере создания простого сервиса отложенного чтения. И в первой части рассмотрены следующие шаги: установка фреймворка, конфигурация, использование миграций, использование ORM, аутентификация, настройка маршрутов (в том числе учитывая версионность API), создание контроллера реализующего операции создания, обновления и получения списка ресурсов.
Как выполнять асинхронные запросы на PHP[25] — Отличный пост, в котором автор описывает 3 способа выполнения асинхронных вызовов из PHP. Эти три способа не предполагают использование каких-либо внешних зависимостей типа сервера очередей, все на чистом PHP: открытие сокета и закрытие без ожидания ответа; запись в лог файл (псевдоочередь); форк процесса curl. Для каждого способа приведен небольшой пример и рассмотрены достоинства/недостатки каждого.
Параллельный PHPUnit[26] — Небольшой пост о параллельном использования PHPUnit для запуска нескольких наборов тестов одновременно. Автор упоминает о возможных проблемах с состоянием гонки и рекомендует использовать инструмент Paratest[27].
Doctrine и SOLID[28] — В своем посте автор говорит о невозможности следовать принципам SOLID[29] при использовании Doctrine 2, в частности сложным является сохранение единственной обязанности[30]. Автор дает пару рекомендаций по улучшению кода.
Как писать код, который готов к изменениям[36] — Отличный пост, в котором сделан обзор всех принципов проектирования и кодирования программного обеспечения, призванных сделать код легко изменяемым и поддерживаемым. Хороший текст дополнен простыми и понятными примерами на PHP.
Управляем билдами PHP приложений помощь Phing[39] — Хорошая отправная точка, если вы решили автоматизировать развертывание ваших PHP приложений. В статье приведена базовая информация по использованию основанного на Ant инструмента — Phing. Рассмотрена установка из PEAR, базовая конфигурация для проекта, пример конфигурации для запуска тестов на PHPUnit.
Кастомный загрузчик конфигов для Symfony 2[40] —В посте автор описывает решение задач конфигурирования Symfony 2 в том случае, когда фреймворк является далеко не единственным компонентов в системе. Описанный подход предполагает использование INI файлов вместо YAML.
Zend Framework 2 ServiceManager[41] —Последняя статья из серии введения в Zend Framework 2. В предыдущих постах уже были рассмотрены Dependency Injection[42], Модули и ModuleManager[43] и EventManager[44]. На этот раз автор касается компонента ServiceManager, пишет о том, как его конфигурировать, как использовать и упростить при этом разработку, приводит примеры.
Настройка PHP окружения для разработки на VPS[45] —Автор столкнулся с рядом проблем и неудобств при разработке на локальной машине и решил использовать для этих целей полноценный VPS[46]. Свой опыт он подробно изложил в посте.
Внедрение зависимости с помощью Pimple[50] — При разработке приложений мы стараемся создавать независимые модули и компоненты для того, чтобы было возможным их повторное использование. Но создавать полностью независимые компоненты сложная задача, и получившиеся зависимости могут создать много проблем, если не находятся под должным контролем. В этом случае внедрение зависимости является отличным решением. В посте рассмотрено использование простой библиотеки реализующей внедрение зависимости — Pimple[51] от одного из разработчиков Symfony.
Ускоряем автозагрузку классов с помощью Composer[52] — В посте автор показывает нестандартное решение, которое позволяет увеличить скорость загрузки классов с помощью Composer, создав предварительно символические ссылки на файлы.
Комментарии и Doc-блоки в PHP[53] — Небольшой пост о том, как правильно следует комментировать код и составлять Doc-блоки.
Вход через соцсети: модуль SSO[56] — В статье автор подробно рассказывает о создании модуля авторизации через социальные сети для фремворка Kohana.
Composer Stability Flags [57] — Автор рассказывает о том, как в Сomposer работают «флаги стабильности» и о проблемах, связанных со стабильностью версий при использовании Сomposer, кроме того автор призывает разработчиков модулей/расширений тэгировать свои проект и обозначать стабильность своего кода в репозиториях соответствующими ветками.
Автоматизированный рефакторинг в большом проекте[59] — Хабрапост, в котором продемонстрирован способ автоматического рефакторинга. На примере phpBB показано, как можно «отрефакторить» вызовы SQL-запросов, чтобы они использовали экранирование входных данных.
Ловим фатальные ошибки PHP [60] — Краткий туториал о том, как можно перехватить Fatal Error'ы и красиво их оформить.
Core Concepts: Attack Surface [62] — Автор рассказывает о том, что такое поверхность атаки[63] и как эту самую поверхность можно уменьшить, повысив тем самым безопасность своего приложения.
Берегитесь массового присваивания [64] — Немного о том, как важно фильтровать приходящие от пользователя данные, в чем суть проблемы и чем это может быть чревато.
[30] единственной обязанности: http://ru.wikipedia.org/wiki/Принцип_единственной_обязанности
[31] Конфигурируем контейнер служб Symfony для использования Twitter API: http://gonzalo123.com/2013/02/04/how-to-configure-symfonys-service-container-to-use-twitter-api/
[35] Логируем согласно PSR-3 для повторного использования: http://phpmaster.com/logging-with-psr-3-to-improve-reusability/
[36] Как писать код, который готов к изменениям: http://net.tutsplus.com/tutorials/how-to-write-code-that-embraces-change/
[37] 8 практик по обеспечению безопасности вашего веб-приложения: http://phpmaster.com/8-practices-to-secure-your-web-app/
[38] Легко масштабируем с помощью nginx, memcached, PHP-FPM и APC: http://www.jblotus.com/2013/02/01/simply-scale-with-nginx-memcached-php-fpm-and-apc/
[39] Управляем билдами PHP приложений помощь Phing: http://unassumingphp.com/managing-php-application-builds-with-phing/
[40] Кастомный загрузчик конфигов для Symfony 2: http://www.adayinthelifeof.nl/2013/01/30/custom-symfony2-config-loader/
[65] Аутентификация с помощью OAuth на PHP : http://www.phpbuilder.com/articles/application-architecture/miscellaneous/oauth-authentication-for-social-apps-in-php.html
[66] Testable Code и SOLID: http://qafoo.com/blog/032_talk_phpbnl_testable_code_solid.html