Дайджест интересных новостей и материалов из мира PHP за последние две недели №19 (03.06.2013 — 17.06.2013)
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
Symfony 2.3.0! Первый релиз с долгосрочной поддержкой![1] — Вышла новая версия одного из самых популярных PHP-фреймворков, и почти сразу появилось первое минорное обновление[2]. Данный релиз примечателен тем, что будет поддерживаться до 2016 года. Если сомневаетесь, какую версию использовать, то специально для вас имеется полезная инструкция[3], которая кроме рекомендаций содержит дорожную карту развития фреймворка. Был написан также пост[4] о том, как с минимальными усилиями обновлять версию Symfony на проекте.
Кстати сайт фреймворка — symfony.com[5] отныне будет мультиязычным[6], любой желающий может помочь в переводе сайта используя соответствующий репозиторий на GitHub[7].
Доступен PHP 5.5 RC3[8] — Исправлено[9] несколько ошибок и предполагается, что это будет последний релиз-кандидат, а уже 20 июня стоит ожидать финальной версии.
Июньский выпуск журнала Web & PHP[13] — В свежем номере раскрыты следующие темы: Введение в документо-ориентированные БД на примере MongoDB; PHP наизнанку: Julien Pauili о внутренностях интерпретатора; Жизнь разработчика WordPress-плагинов; и другие.
Встречаем HTML5 парсер и сериализатор для PHP[14] — Авторы возродили умершую пару лет назад библиотеку php5lib[15]: переписали парсер и сериализатор, добавили поддержку composer, и на выходе получили новый полезный инструмент.
Pinboard — прокачиваем Pinba для мониторинга PHP[16] — Отличное дополнение для pinba — сервера реального времени для мониторинга и сбора статистики в PHP, позволяющее собирать информацию не только в реальном времени, но и за продолжительные периоды, а затем просматривать ее в удобном виде.
PHP
The PHP Internals Book[17] — Для тех, кому интересно, как устроен PHP внутри, а также для тех, кто хотел бы разрабатывать расширения или даже участвовать в разработке самого языка тремя ведущими участниками core-команды: Julien Pauli, Anthony Ferrara и Nikita Popov — была начата работа над книгой. Книга в основном расчитана на разработчиков имеющих опыт программирования на C, но информация, насколько это возможно, будет подана в виде, понятном и тем, кто не имел дела с языком C.
Работа над книгой еще продолжается, но уже сейчас доступна глава, в которой рассмотрено устройство классов и объектов.
Параллельное тестирование с помощью PHPUnit и ParaTest[26] — Отличный пошаговый туториал, о том как запускать параллельное выполнение PHPUnit-тестов. Кроме ParaTest в посте также рассмотрен инструмент Paraunit, решающий ту же самую задачу. Также приведен пример использование ParaTest для параллельного выполнения Selenium-тестов. Интересующиеся темой параллельного тестирования должны ознакомиться с замечательным хабрапостом о параллелизации юнит-тестов[27], если еще не сделали этого.
Упаковываем Sуmfony-приложение в один файл — введение[28] — Этим постом создатель Symfony, Fabien Potencier, начинает серию статей о том, как объединить полный Symfony в один файл. Для начала он рассказывает о причинах, почему и когда это может быть полезно.
Советы разработчикам[29] — В посте собраны действительно полезные советы от опытного разработчика и руководителя группы пользователей PHP.
Laravel 4 на Google AppEngine[30] — Большой и подробный пошаговый туториал по разворачиванию стандартного Laravel4-приложения на облачном хостинге[31] от Google, который не так давно обзавелся поддержкой PHP.
Pseudo-Random vs. True Random[32] — Небольшой эксперимент, в котором изображение, cгенерированное с помощью rand(), демонстрирует, насколько на самом деле «не случайна» последовательность генерируемых чисел. Подробнее о генераторах случайных чисел в PHP можно прочитать тут[33].
Пишем музыку с помощью PHP[35] — Хабраперевод засветившейся в прошлом выпуске дайджеста статьи, в которой автор показывает, как можно генерировать не совсем случайную последовательность нот. Для этого предлагается использовать механизм цепей Маркова[36] и обучение на некотором наборе данных.
PHP REST API Frameworks[41] — Обзор PHP-фреймворков, которые можно использовать для создания REST API. Сравнения автор к сожалению не проводил, обзор представляет собой внушительный список доступных решений с краткими описаниями и ссылками.
Whoops! PHP-ошибки для крутых ребят[42] — Туториал по использованию небольшой библиотеки, которая позволяет выводить красивые и главное информативные страницы ошибок и необработанных исключений.
Как подготовить доклад и попасть на конференцию[49] — Пост не имеет непосредственного отношения к разработке и PHP, но в силу огромного числа конференций с открытыми CFP, будет интересен многим опытным разработчикам желающим выступить на них с докладом.
Приступаем к тестированию[52] — В посте говорится, о том, что несмотря на распространенный подход, при котором сначала реализуется модульное тестирование, затем функциональное и затем приемочное, очень часто можно пропустить этап модульного тестирования и приступить функциональным тестам — это совершенно нормально. Невозможность писать модульные тесты не должно быть оправданием отсутствия тестов вообще. Попробуйте Codeception[53].
Тест на тему безопасности веб-приложений[56] — 15 вопросов, которые помогут выявить пробелы в знаниях о безопасности веб-приложений. По каждому вопросу дано объяснение и ссылки для более глубокого изучения проблемы.
Почему вам следует обратить внимание на Continuous Integration[57] — FTP и редактирование файлов на продакшене — все мы через это проходили, но такой подход совершенно неприемлем в сколько-нибудь крупном проекте и числом разработчиков больше одного. К счастью, существует более эффективный подход к сборке и развертыванию приложения, о нем вкратце и пишет автор.
Работаем с jQuery и Silex в качестве RestFull-провайдера[58] — В своем предыдущем посте автор писал об использовании связки AngularJS + Silex. На этот раз вместо AngularJS автор демонстрирует использование обыкновенного jQuery.
[16] Pinboard — прокачиваем Pinba для мониторинга PHP: http://habrahabr.ru/post/183104/
[17] The PHP Internals Book: http://www.phpinternalsbook.com/
[18] Какой PHP-фреймворк вы используете?: http://habrahabr.ru/post/183290/
[19] прошлым: http://habrahabr.ru/post/116030/
[20] данными с GitHub: http://phptrends.com/category/7
[21] Принятие версий PHP: http://www.lornajane.net/posts/2013/php-version-adoption
[22] Почему Phalcon любого другого PHP-фреймворка?: http://blog.phalconphp.com/post/52719862920/why-is-phalcon-faster-than-any-other-php-framework
[23] Proc_Open — связь с внешним миром: http://phpmaster.com/proc-open-communicate-with-the-outside-world/
[24] конвейера в Unix: http://ru.wikipedia.org/wiki/Конвейер_(UNIX)
[25] proc_open: http://php.net/proc_open
[26] Параллельное тестирование с помощью PHPUnit и ParaTest: http://net.tutsplus.com/tutorials/php/parallel-testing-for-phpunit-with-paratest/
[27] хабрапостом о параллелизации юнит-тестов: http://habrahabr.ru/company/badoo/blog/181488/
[28] Упаковываем Sуmfony-приложение в один файл — введение: http://fabien.potencier.org/article/69/packing-a-symfony-full-stack-framework-application-in-one-file-introduction
[34] Лучшие практики PhpStorm — идеальный рабочий процесс для PHP-разработчиков: http://tv.jetbrains.net/videocontent/webinar-recording-phpstorm-best-practices-the-perfect-workflow-for-php-developers
[35] Пишем музыку с помощью PHP: http://habrahabr.ru/post/182010/
[55] seed-приложение для Silex: https://github.com/elfet/silicone-skeleton
[56] Тест на тему безопасности веб-приложений: http://timoh6.github.io/WebAppSecQuiz/
[57] Почему вам следует обратить внимание на Continuous Integration: http://www.tembies.com/2013/06/continuous-integration-deployment-with-php/
[58] Работаем с jQuery и Silex в качестве RestFull-провайдера: http://gonzalo123.com/2013/06/10/working-with-jquery-and-silex-as-restfull-resource-provider/
[59] Внедряем Twig в ваш legacy-код: http://odino.org/integrating-twig-in-your-legacy-php-code/
[60] PhpStrom поддерживает Twig: http://blog.jetbrains.com/phpstorm/2013/06/twig-support-in-phpstorm/
[61] Как вы используете bcrypt для хэширования паролей на PHP?: http://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php/17073604#17073604
[62] Разработка web API: http://habrahabr.ru/post/181988/