Дайджест интересных новостей и материалов из мира PHP за последние две недели №21 (01.07.2013 — 15.07.2013)
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
- Индекс TIOBE: PHP восстанавливает позиции [1] — Согласно недавно опубликованным данным по индексу популярности языков программирования TIOBE [2] , популярность PHP растет. За 2013 год именно PHP показал самый высокий показатель роста — 1.64%, и по сравнению с июлем прошлого года — 2.17%, что также самый высокий результат, и +2 пункта в рейтинге. Авторы связывают рост с выходом ZF2 в сентябре прошлого года, но, думаю, это не главная и не единственная причина.
- Вышел Phalcon 1.2.0 [3] — Обновился самый быстрый PHP-фреймворк. Подробный список изменений доступен в анонсе беты [4].
- EllisLab ищет нового владельца для CodeIgniter [5] — Сразу после анонса релиза CodeIgniter 2.1.4 [6], EllisLab объявили о том, что, по ряду причин, не в силах поддерживать фреймворк. Многие настроены скептически по отношению к будущему CodeIgniter и рассматривают альтернативы (Прощай CodeIgniter, здравствуй Laravel [7]), но на данный момент CodeIgniter остается одним из самых популярных PHP-фреймворков, с наибольшим числом предложений по работе на фриланс-биржах.
- Fenom — yet another PHP template engine [8] — Этот «еще один шаблонизатор» на деле оказался совершенно замечательным инструментом — выигрывает в производительности у Twig и Smarty, при этом потребляет меньше памяти, а код компактнее. Браво!
- 3 года Behat [9] — Популярному BDD-инструменту исполнилось 3 года и автор пишет о том, чего удалось достичь за это время и что планируется реализовать в ближайшем будущем.
- Вышел в свет Silex 1.1 [10] — Обновился популярный микрофреймворк, построенный на компонентах Symfony. В релизе прекращена поддержка Symfony 2.1 и 2.2. Также имеется небольшой пост [11] об интеграции Stack [12] и Silex.
- Стартовала программа раннего доступа PHPStorm 7 [13] — Напомню, что благодаря программе можно совершенно бесплатно и легально использовать бета-версии IDE, и, конечно же, первым попробовать все новые возможности.
- Опубликован черновик спецификации HTTP 2.0 [14] — Новость, не имеющая непосредственного отношения к PHP, но всем веб-разработчикам обязательно следует ознакомиться со спецификацией, которая определит будущее веба.
- Релизы PHP 5.4.17 [15] и PHP 5.3.27 [16] — Если первый релиз представляет собой обычный набор исправлений, то второй примечателен тем, что стал последним регулярным релизом ветки 5.3. В течении года при необходимости будут выпускаться исправления ошибок безопасности, но в целом это закат эпохи 5.3.
- PHPCI — непрерывная интеграция для PHP-проектов [17] — Бесплатный инструмент с открытым кодом, специально спроектированный для непрерывной интеграции PHP-приложений. Основной целью ставилась простота использования, поэтому, конечно же, это не Jenkins/TeamCity.
- Yii 1.1.14 RC [18] — Намечается массивный релиз актуальной ветки фреймворка. Пользователей ожидает множество изменений и новых возможностей.
PHP
- Участвуем в разработке ядра PHP [19] — Если вы хотите присоединиться к числу контрибьюторов в ядро PHP, то данный пост будет отличной отправной точкой. Автор описал основные моменты, на которые стоит обратить внимание и кроме того опубликовал проект vagrant-php-src-dev [20], который позволяет одной командой поднять виртуальное окружение готовое к экспериментам над исходниками PHP.
- Динамические примеси в PHP [21] — В хабрапосте сделано детальное сравнение двух способов реализации примесей [22] в PHP стандартными средствами без использования расширений и трейтов.
- Получаем доступ к закрытым членам класса в PHP, не используя рефлексию [23] — Автора не удовлетворила слишком низкая скорость работы ReflectionClass и ReflectionProperty, и он решил попробовать метод Closure::bind [24], использование которого показало результат заметно лучше.
- PHP 5.5: генераторы [25] — Вдогонку к состоявшемуся релизу пост о новой возможности. Кроме обзора приведен пример использования генераторов в качестве провайдера данных в юнит-тестах. Напомню о хорошей демонстрации эффективности генераторов [26], а также небольшая библиотека [27] от Никиты Попова, в которой итеративные функции вроде
map()
и filter()
реализованы с помощью генераторов.
Материалы для обучения
- Монады в ООП PHP [28] — Пост о монадах в PHP в поддержку библиотеки автора MonadPHP [29].
- Знакомство с Yii 2 на основе создания простого блога [30] — По ссылке хороший хабрапост с туториалом, а тем временем полным ходом идет работа над Yii 2: пополняется документация [31], доступны базовое приложене-скелет [32] и демонстрация нового компонента для отладки [33].
- Июльский выпуск журнала Web & PHP [34] — Теперь статьи из выпуска можно читать на сайте журнала, а PDF-версия, как и прежде, доступна для скачивания. В этом номере стоит обратить внимание на статью об интеграции Node.js и PHP [35], а также обзор Symfony2 [36].
- Пользовательская библиотека Array_column() [37] — В PHP 5.5 была добавлена новая функция array_column() [38], а для тех, кто не желает обновляться до 5.5, автор функции создал микро-библиотеку [39] с реализацией оной.
- Устанавливаем Jenkins и интегрируем с GitHub для PHP-проекта [40] — Небольшой туториал о том, как установить Jenkins и настроить интеграцию с GitHub так, чтобы при пуше автоматически запускалась сборка приложения. Также много полезной информации об использовании Jenkins с PHP проектами можно найти тут [41].
- Создание поисковика на React PHP [42] — Интересный пост, в котором описано создание индексирующего демона с помощью React PHP.
- Параметризованные маршруты на AngularJS и Silex [43] — Небольшая заметка, о том, как расширить Controller в AngularJS для удобного использования параметризованных маршрутов.
- Сохраняем PHP-сессии в Redis [44] — Подробный туториал, в котором вы найдете описание мотивов использования стороннего хранилища для сессий, немного базовой информации об обработке сессий и хранении данных, а также непосредственно пример реализации SessionHandlerInterface для работы с Redis.
- PHP-сессии в Erlang Mnesia [45] — Если с хранением сессий в Redis все более или менее очевидно, то в данном посте рассмотрено экзотическое решение. Впрочем, это всего лишь эксперимент пока неприменимый в продакшене.
- Структуры данных для PHP-разработчиков: деревья [46] — В предыдущем посте [47] серии речь шла о стэке и очереди, на этот раз немного теории и примеров на PHP о деревьях. Пост будет полезен молодым разработчикам и тем, кто только начинает.
- Руководство по Vagrant для начинающих [48], 2 [49], 3 [50] — Не зря посты о Vagrant регулярно встречаются в дайджестах, ведь этот инструмент позволяет буквально одной командой поднимать полностью готовое к работе виртуальное окружение. Особенно удобно, например, когда для проекта необходима особая конфигурация и софт, а родную ОСь менять/загромождать для разработки не хочется. Если вы еще не пробовали Vagrant+Puppet, то начните прямо сейчас с прочтения постов. Кроме того, для PHP есть отличный графический генератор Vagrant-манифестов — PuPHPet [51].
- Строим CRUD-приложение на Yii за несколько минут [52] — Небольшой элементарный туториал по Yii 1.1. Хотя вся информация есть в документации [53] , но тем, кто только начинает, пост может быть полезным.
- ZendDbSql — строим запросы легко и эффективно [54], 2 [55], 3 [56] — Тройка туториалов для начинающих по работе с базой данных с помощью Zend-классов.
- Интегрируем Varnish Cache с PHP-приложением [57], 2 [58] — Пара туториалов о том, как ускорить PHP-приложения благодаря использованию HTTP-акселератора Varnich Cache.
- PHPStorm + XDebug + Bitbucket: разработка на удаленном сервере в небольшой команде [59] — В хабрапосте автор описал схему работы над PHP-проектом без использования локальных веб-серверов разработчиками.
- Улучшаем производительность PHP на Windows с помощью Profile Guided Optimization (PGO) [60] — Интересный пост об оптимизации основанной на данных профилирования, применяемой в бинарниках PHP для Windows.
- Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях [61] — Автор хабрапоста поделился своим решением задачи простого и наглядного доступа к свойствам модели.
- PHP-реализация виртуальной машины Chicken [62] — Автор ReactPHP Igor Wiedler, портировал реализацию эзотерического языка программирования, единственным символом которого является «chicken» [63]. Практического применения, естественно, никакого, но код может быть неплохим предметом для изучения.
- Laravel 4: как сохранить код организованным [64] — Несколько советов о том, как не допустить беспорядка в коде Laravel-проекта в процессе роста приложения.
- Создаем гибкие контроллеры в Laravel 4 [65] — Туториал по Laravel, в котором раскрыта тема использования репозиториев.
- Статистика использования баз данных, серверов, версий Java и PHP в облаке [66] — Хабрапост со статистикой от популярного PaaS — Jelastic.
- Так ли быстр ваш Framework или хватит тестировать производительность Нello World [67] — Небольшой, но интересный хабрапост: «изучайте как можно больше решений, берите из них лучшее, совмещайте удачные реализации».
- О библиотеках с открытым исходным кодом [68] — Отличный пост, в котором автор собрал лучшие практики по организации и оформлению репозитория кода при публикации для всеобщего пользования. Итак, если вы реализовали библиотеку и хотите чтоб она была популярной, а также желаете получить конструктивный фидбэк, то обязательно ознакомьтесь с постом.
- Отправка уведомлений из PHP [69] — Автор реализовал простое и легковесное решение для управления уведомлениями — Notificator [70]. Уведомления можно посылать на почту, использовать уведомления рабочего стола Ubuntu, или реализовать свой собственный обработчик.
- Что нового в PHP 5.5 [71] — Хороший пост о новых возможностях PHP последней версии.
- PHP в 2013 году [72] — На встрече PHP-пользователей в Лондоне с докладом выступал Расмус Лердорф. По ссылке доступны слайды, а тут [73] можно посмотреть видеозапись.
- Использование ncurses в PHP [74] — Отличный хабрапост об использовании библиотеки ncurses, которая позволяет создавать сложные и удобные консольные утилиты.
Ссылка [75] на предыдущий выпуск.
Автор: pronskiy
Источник [76]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/38735
Ссылки в тексте:
[1] Индекс TIOBE: PHP восстанавливает позиции: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
[2] TIOBE: https://ru.wikipedia.org/wiki/TIOBE_Index
[3] Вышел Phalcon 1.2.0: http://blog.phalconphp.com/post/55004790452/phalcon-1-2-0-released
[4] анонсе беты: http://blog.phalconphp.com/post/53287669607/phalcon-1-2-beta-1-released
[5] EllisLab ищет нового владельца для CodeIgniter: http://habrahabr.ru/post/186194/
[6] CodeIgniter 2.1.4: http://ellislab.com/blog/entry/codeigniter-2.1.4-released
[7] Прощай CodeIgniter, здравствуй Laravel: http://phpmaster.com/goodbye-codeigniter-hello-laravel/
[8] Fenom — yet another PHP template engine: http://habrahabr.ru/post/169525/
[9] 3 года Behat: http://everzet.com/post/54277235902/with-b-for-3
[10] Вышел в свет Silex 1.1: http://silex.sensiolabs.org/doc/changelog.html
[11] пост: http://gonzalo123.com/2013/07/15/bundles-in-silex-using-stack/
[12] Stack: http://stackphp.com/
[13] Стартовала программа раннего доступа PHPStorm 7: http://blog.jetbrains.com/phpstorm/2013/07/phpstorm-7-early-access-program-started/
[14] Опубликован черновик спецификации HTTP 2.0: http://habrahabr.ru/post/186102/
[15] PHP 5.4.17: http://php.net/index.php#id2013-07-04-1
[16] PHP 5.3.27: http://php.net/index.php#id2013-07-11-1
[17] PHPCI — непрерывная интеграция для PHP-проектов: http://www.phptesting.org/
[18] Yii 1.1.14 RC: http://habrahabr.ru/post/186596/
[19] Участвуем в разработке ядра PHP: http://benramsey.com/blog/2013/07/contributing-to-php-core/
[20] vagrant-php-src-dev: https://github.com/ramsey/vagrant-php-src-dev
[21] Динамические примеси в PHP: http://habrahabr.ru/company/alawar/blog/186196/
[22] примесей: http://ru.wikipedia.org/wiki/Примесь_(программирование)
[23] Получаем доступ к закрытым членам класса в PHP, не используя рефлексию: http://ocramius.github.io/blog/accessing-private-php-class-members-without-reflection/
[24] Closure::bind: http://php.net/manual/en/closure.bind.php
[25] PHP 5.5: генераторы: http://thephp.cc/viewpoints/blog/2013/07/php-5-5-generators
[26] демонстрации эффективности генераторов: http://blakegardner.co/2013/06/24/practical-usage-of-php-5-5-generators-yield-keyword/
[27] библиотека: https://github.com/nikic/iter
[28] Монады в ООП PHP: http://blog.ircmaxell.com/2013/07/taking-monads-to-oop-php.html
[29] MonadPHP: https://github.com/ircmaxell/monad-php
[30] Знакомство с Yii 2 на основе создания простого блога: http://habrahabr.ru/post/185236/
[31] документация: https://github.com/yiisoft/yii2/blob/master/docs/guide/index.md
[32] базовое приложене-скелет: https://github.com/yiisoft/yii2-app-basic
[33] нового компонента для отладки: http://www.youtube.com/watch?v=6LAFdnApLH8
[34] Июльский выпуск журнала Web & PHP: http://webandphp.com/July2013
[35] об интеграции Node.js и PHP: http://webandphp.com/IntegratingNode.jswithPHP
[36] обзор Symfony2: http://webandphp.com/GettingstartedwithSymfonyStandardEdition
[37] Пользовательская библиотека Array_column(): http://benramsey.com/blog/2013/07/the-array-column-php-userland-library/
[38] array_column(): http://php.net/manual/en/function.array-column.php
[39] микро-библиотеку: https://github.com/ramsey/array_column
[40] Устанавливаем Jenkins и интегрируем с GitHub для PHP-проекта: http://cvuorinen.net/2013/06/installing-jenkins-ci-server-with-github-integration-for-a-php-project/
[41] тут: http://jenkins-php.org/
[42] Создание поисковика на React PHP: http://elfet.ru/creating-a-search-engine-on-react-php
[43] Параметризованные маршруты на AngularJS и Silex: http://gonzalo123.com/2013/07/08/dynamic-routes-with-angularjs-and-silex/
[44] Сохраняем PHP-сессии в Redis: http://phpmaster.com/saving-php-sessions-in-redis/
[45] PHP-сессии в Erlang Mnesia: http://unix0.wordpress.com/2013/06/22/php-sessions-in-erlang-mnesia/
[46] Структуры данных для PHP-разработчиков: деревья: http://phpmaster.com/data-structures-2/
[47] предыдущем посте: http://phpmaster.com/php-data-structures-1/
[48] Руководство по Vagrant для начинающих: http://www.erikaheidi.com/2013/07/02/a-begginers-guide-to-vagrant-getting-your-portable-development-environment/
[49] 2: http://www.erikaheidi.com/2013/07/04/a-beginners-guide-to-vagrant-part-2-provisioning-and-puppet/
[50] 3: http://www.erikaheidi.com/2013/07/10/a-beginners-guide-to-vagrant-and-puppet-part-3-facts-conditionals-modules-and-templates/
[51] PuPHPet: https://puphpet.com/
[52] Строим CRUD-приложение на Yii за несколько минут: http://phpmaster.com/build-a-crud-app-with-yii-in-minutes/
[53] документации: http://yiiframework.ru/doc/guide/ru/quickstart.first-app
[54] ZendDbSql — строим запросы легко и эффективно: http://www.maltblue.com/tutorial/zend-db-sql-select-easy-where-clauses
[55] 2: http://www.maltblue.com/tutorial/zend-db-sql-creating-joins-and-unions-with-ease
[56] 3: http://www.maltblue.com/tutorial/zend-db-sql-the-basics
[57] Интегрируем Varnish Cache с PHP-приложением: http://systemsarchitect.net/integrating-varnish-cache-with-a-php-application/
[58] 2: http://systemsarchitect.net/reading-php-session-from-varnish-cache/
[59] PHPStorm + XDebug + Bitbucket: разработка на удаленном сервере в небольшой команде: http://habrahabr.ru/post/186080/
[60] Улучшаем производительность PHP на Windows с помощью Profile Guided Optimization (PGO): http://blogs.msdn.com/b/vcblog/archive/2013/05/06/speeding-up-php-performance-for-your-application-using-profile-guided-optimization-pgo.aspx
[61] Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях: http://habrahabr.ru/post/185896/
[62] PHP-реализация виртуальной машины Chicken: https://github.com/igorw/chicken-php
[63] эзотерического языка программирования, единственным символом которого является «chicken»: http://torso.me/chicken
[64] Laravel 4: как сохранить код организованным: http://chrishayes.ca/blog/code/laravel-4-methods-staying-organized
[65] Создаем гибкие контроллеры в Laravel 4: http://culttt.com/2013/07/08/creating-flexible-controllers-in-laravel-4-using-repositories/
[66] Статистика использования баз данных, серверов, версий Java и PHP в облаке: http://habrahabr.ru/company/jelastic/blog/186256/
[67] Так ли быстр ваш Framework или хватит тестировать производительность Нello World: http://habrahabr.ru/post/186178/
[68] О библиотеках с открытым исходным кодом: http://williamdurand.fr/2013/07/04/on-open-sourcing-libraries/
[69] Отправка уведомлений из PHP: http://odino.org/notificator-sending-notifications-through-php-in-clean-and-lightweight-way/
[70] Notificator: https://github.com/namshi/notificator
[71] Что нового в PHP 5.5: http://phpmaster.com/whats-new-in-php-5-5/
[72] PHP в 2013 году: http://talks.php.net/show/phplondon13/
[73] тут: http://www.ustream.tv/channel/phplondon
[74] Использование ncurses в PHP: http://habrahabr.ru/post/186570/
[75] Ссылка: http://habrahabr.ru/company/zfort/blog/185142/
[76] Источник: http://habrahabr.ru/post/186704/
Нажмите здесь для печати.