Дайджест интересных новостей и материалов из мира PHP (25.02.2013 — 11.03.2013)
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
- Optimizer+ будет включен в PHP 5.5 — За последние две недели произошел целый ряд событий, связанных с включением Zend Optimizer+ в PHP. Было запущено голосование, которое, напомним, предполагало 3 варианта развития событий: 1) Включить в 5.5, даже если это немного задержит релиз; 2) Если для интеграции необходимо задержать релиз 5.5, то включить в 5.6; 3) Не включать в PHP, предоставить только из PECL. Сначала пакет стал доступен из PECL, а затем по результатам голосования Зеевом Сураски в php-internals было оглашено решение о включении Optimizer+ в качестве zend_extension в дефолтной поставке PHP, а в версии 5.6 планируется уже интегрировать в ядро. Данное сообщение породило массу обсуждений, так как некоторые считают, что такое решение требует 2/3 на голосовании. Но все-таки включение оптимайзера никак не отражается на синтаксисе языка, да и по умолчанию соответствующая опция в php.ini, вероятно, будет установлена в Off. Ну что ж, покойся с миром предсказуемый релиз-процесс PHP: еще одна альфа, а бета вновь откладывается. Но ради таких результатов хотелось бы получить кэширование опкода из коробки на год раньше.
- Релиз PHP 5.5.0 Alpha6 — Сам по себе релиз содержит всего несколько исправлений ошибок, найденных в предыдущей альфе, но примечателен тем, что служит для отсрочки релиза беты, в которую уже будет включен Optimizer+.
- Вышел в свет Symfony 2.2 — Долгожданный релиз работа, над которым велась 6 месяцев. Подробнее о новых возможностях в посте .
- Первая бета Phalcon 1.0.0 — Спустя год после появления на свет этот необычный PHP фреймворк дожил до первой версии.
- 12й выпуск журнала Web & PHP — В юбилейном выпуске (журнал выходит уже год) раскрыты следующие темы: использование рекурсии в PHP; использование PECL; исправление ошибок в продакшене с помощью APM и многие другие.
- О PHP-FIG — Matthew Weier O’Phinney, архитектор и лидер проекта Zend Framework, заявил о том, что покидает PHP-FIG, группу принимающую стандарты PSR. В посте, он приводит причины, которые заставили принять его такое решение. Вкратце, есть более важные вещи, на которые автор хотел бы тратить время чем споры о том, что использовать табуляцию или пробелы, где ставить фигурные скобки и т.п.
PHP
- Как на самом деле работает foreach — Самый подробный ответ на StackOverflow, который вы могли встретить. Core PHP разработчик Никита Попов расставляет все точки над работой цикла foreach.
- Следующая большая вещь в PHP — Описав свое видение текущего состояния дел в PHP, авторы поста утверждают, что если все будет продолжаться в таком же духе, то PHP скоро умрет. Да, проживет 5, может быть 10 лет и умрет. По их мнению, чтобы не допустить этого PHP 6 должен вносить кардинальные изменения, направленные на производительность, а об обратной совместимости вообще призывают забыть. Кроме таких радикальных заявлений, авторы вносят действительно важное предложение: создать возможность обычным PHP-пользователям участвовать в развитии языка. Одним из авторов даже создан соответствующий RFC, в котором предложено добавить на php.net открытые голосования с тем, чтобы получить обратную связь от пользователей.
- О предсказуемом цикле релизов PHP — Небольшой пост, в котором автор в связи с недавними новостями об Optimizer+ высказывает мнение о том, что стабильный и предсказуемый процесс релизов очень важен для разработчиков. А поспешное включение ZO+ в язык в виде zend_extension ничего по сути не дает: на shared хостингах его не будет и через год, а те, кто имеют возможность использовать последние версии PHP на сервере, могут просто поставить Optimizer+ из PECL.
Материалы для обучения
- Функциональное программирование на PHP — Совсем недавно тема уже проскакивала в дайджесте и, тем не менее, хороший пост, в котором раскрыты базовые принципы функционального программирования и их применение в PHP.
- Фильтр Блума на PHP — PHP реализация вероятностной структуры данных, позволяющей компактно хранить множество элементов и проверять принадлежность заданного элемента к множеству. Например, автор применяет фильтр, чтобы проверить существование слова или фразы в словаре >10000000 слов.
- Модульное тестирование на PHPUnit, 2, 3, 4 — Совершенно полное руководство по модульному тестированию для начинающих, в котором в четырех частях рассмотрены все аспекты использования PHPUnit, начиная с установки и заканчивая продвинутыми техниками использования.
- Меры, которые следует предпринять если ваш PHP сайт оказался взломан — Если в предыдущем посте автор рассматривал диагностику: как узнать, что ваш сайт был взломан, то на этот раз рассмотрено «лечение»: перечислены шаги, которые помогут избавиться от зловредного кода. Кроме того приведены рекомендации по предотвращению повторного взлома и заражения.
- Интегрируем OAuth с помощью Opauth — Небольшой туториал по использованию мульти-провайдерного фреймворка для аутентификации через OAuth в PHP приложениях. В посте рассмотрен пример интеграции с CodeIgniter, но существуют реализации для всех популярных фреймворков. Список поддерживаемых из коробки провайдеров внушителен.
- Соблюдение стандартов PCI и PHP разработчики — В статье коротко рассказано о том, что же такое PCI стандарты, рассмотрены основные мифы их окружающие, а также дан обзор основных моментов. Более подробно автор останавливается на пунктах, непосредственно связанных с бэкенд разработкой веб-приложений.
- Устанавливаем XHGui — Небольшой туториал по установке и использованию отличного инструмента для профилирования кода. Чуть более подробный туториал уже был тут.
- Contributing to Paratest — Небольшая статья, в которой автор рассказывает преимущества использования инструмента Paratest для параллельного выполнения тестов, а также рассказывает о новых улучшениях, которые были предложены сторонними разработчиками и призывает всячески помогать и участвовать в развитии проекта.
- Масштабирование приложений на Silex. Использование RouteCollection — В этом посте автор улучшает свой пример приложения из предыдущей статьи о масштабировании Silex приложений, и на этот раз использует RouteCollection для определения маршрутов вместо контейнера DI из Symfony. Весь код доступен на GitHub.
- Behavior Driven Development — Небольшой обзор концепции BDD в общем и Behat в частности.
- D значит документация — В посте автор рассматривает последний принцип из набора LUCID — документирование. По аналогии с TDD, автор предлагает свой подход к программированию — Documentation Driven Development. Такой подход предполагает, что разработчик сначала пишет документацию и комментарии к коду, затем тесты, а уж после всего приступает непосредственно к коду. В посте также приведен небольшой пример, иллюстрирующий данный поход (без тестов).
- Проблемы, эффективность и отношение группы PHP-FIG — Новость о том, что одна из ключевых фигур покидает PHP-FIG, безусловно, имела резонанс. Автор поста хоть и не является членом PHP-FIG, тем не менее, излагает дельные соображения по поводу дальнейшей судьбы группы. Кроме самого поста, рекомендуем обратить внимание на комментарии, где так же изложены интересные мысли по теме.
- Создаем ePub с помощью PHP и Markdown — Хороший туториал, в котором показано, как из Markdown-документов создать ePub-книгу с помощью библиотек md2epub и RainTPL.
- Valitron The Simple Validation Library That Doesn’t Suck — Автор попытался найти простую и удобную библиотеку для валидации данных пользователя, которая не была бы громоздкой и не имела зависимостей. Не найдя такую, автор написал свою библиотеку Valitron, обладающую всеми перечисленными особенностями. Больше примеров использования можно найти на GitHub.
- Rock On, Refactor, or Re-roll? — Наверняка вы встречались с ситуацией, когда разрабатывая что-нибудь для себя вам вдруг по каким-либо причинам приходится отложить разработку на некоторое время, а вернувшись к делу вы обнаруживаете, что на многие участки кода смотрите иначе и хотели бы сделать по-другому/лучше. В этом случае перед вами стоит выбор: продолжить начатое, рефакторить или переписать все с нуля. Как раз о таких ситуациях данный пост. Автор описывает свой опыт и дает рекомендации по принятию решения.
- Сделаем конференции лучше — Автор поста любит PHP-конференции и часто выступает с докладами на самых разных из них. В посте же он делится несколькими идеями о том, как сделать конференции более полезными, а значит более интересными для широкого круга разработчиков.
- Экспорт избранного Хабра в FB2 — скоростная PHP-версия — Автор поста создал полезное приложение на PHP для создания книги из ваших избранных постов. Для разбора статей была использована библиотека phpQuery.
- Предотвращаем ухудшение кода со временем с помощью модульного тестирования — В статье идет речь о том, что такое «гниение кода». Конечно же, сам код с течением времени не меняется, но окружение может измениться сильно, а это может привести к непредсказуемым результатам. Авторы приводят ряд рекомендаций и примеров по тестированию кода, для того чтобы избежать подобного.
- Полное руководство по командам в Laravel — Большой и подробный туториал по Artisan — утилитам командной строки в Laravel и написанию пользовательских команд.
- Почему не следует использовать .htaccess (AllowOverride All) — в продакшене Автор уже публиковал в своем блоге результаты небольшого исследования Почему FastCGI с Nginx настолько быстрее Apache с mod_php?, в котором обнаружил что узким местом при использовании Apache является директива AllowOverride All. На этот раз автор опубликовал чуть более подробное исследование, а также привел пример конфигурации httpd.conf для Magento.
- RESTful APIs на ZF2, Часть 3 — Продолжение серии статей о построении RESTful интерфейсов. Автор продолжает описывать общие концепции REST, и на этот раз касается документирования вашего API.
- Перегрузка: создаем методы класса на лету — В большинстве языков программирования перегрузка означает возможность описания нескольких методов с одним именем и различным числом аргументов. Перегрузка в PHP означает возможность динамически «создавать» свойства и методы. В своем посте автор на примере показывает использование «перегрузки». Описан класс доступа к базе данных и получение записей с помощью методов getBy (например, по id или username — getById() и getByUsername() соответственно) реализованных через «волшебный» __call().
- Confoo: тестирование, производительность, метрики и API — Слайды нескольких полезных докладов с прошедшей в Монреале конференции Confoo.
- PHP достиг своего предела — Автор перешел с PHP на Ruby, а в посте сравнивает решения типичных задач на Rails и TYPO3, естественно демонстрируя превосходство первого. Может, хватит уже?
- Качество кода — Автор считает, что качество кода — это всего лишь 30% таланта и 70% правильной настройки окружения и процессов. В посте автор описывает те инструменты и методики, которыми пользуется сам для поддержания желаемого качества.
- Отслеживание процесса выполнения задач на PHP — Автор написал простенькую библиотеку, предназначенную для отслеживания прогресса выполнения больших по времени задач, например, пакетной обработке данных. Кроме времени библиотека позволяет отслеживать используемую память.
- Знакомимся с аспектно-ориентированным программированием в PHP — Некоторое время назад автор публиковалхабрапост об АОП на PHP. На этот раз имеем более подробный и глубокий обзор концепций аспектно-ориентированного программирования. Примеры на PHP с использованием библиотеки Go! прилагаются.
- PHP фреймворки на C — В посте рассмотрены плюсы и минусы использования PHP фреймворков, поставляемых в виде расширений языка. Таких к слову автор насчитал два: Phalcon и Yaf. А есть ли другие?
Источник: http://habrahabr.ru/
Автор: Роман Понский