- PVSM.RU - https://www.pvsm.ru -

Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013)

Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013)

Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

Приятного чтения!

Дайджест интересных новостей и материалов из мира 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] Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) — С момента выхода предыдущей версии прошло 2 года, и этот долгожданный релиз содержит множество нововведений и улучшений, особенно коснувшихся производительности. Примечательно, что немногим ранее Fedora и openSUSE заявили о намерении [9] заменить MySQL на MariaDB в установке по умолчанию.
  • 11й выпуск журнала Web & PHP [10] — В свежем выпуске журнала раскрыты следующие темы: PHP в облаке; Развитие Agile мышления [11]; Индексирование баз данных; и другие.
  • Бета релиз phpMyAdmin 4.0.0 [12] — В этой версии наконец-то убраны HTML фреймы.

Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) PHP

  • PHP 6 Pissing in the Wind [13] — Отличнейший пост, в котором автор высказывает свою точку зрения по поводу сложившейся обстановки в PHP сообществе. Он приводит пример проблем в языке, которые постоянно ставятся в укор PHP-ненавистниками, а именно: несогласованность параметров, отсутствие скалярных объектов [14] и поддержки юникода. Сначала автор приводит очевидное, по его мнению, решение, а затем пишет о том, почему же все-таки изменения не вносятся. Он считает, что среди core-разработчиков слишком много консервативно-настроенных личностей, и голосования по сколько-нибудь серьезным изменениям чаще всего проваливаются, как это было, например, с аксессорами [15]. Автор призывает к прогрессивным изменениям, а тех, кто не хочет работать над такими изменениями, призывает отойти от дел. Не менее интересными стали комментарии к посту, например подробный ответ от Зеева Сураски.
  • PHP все растет и растет [16] — Опубликованы результаты исследования данных об использовании PHP за последние 10 лет. Заголовок поста как бы намекает. Кроме описания использованных метрик и особенностей оценки пост также содержит краткую историю языка PHP.
  • Функциональное программирование на PHP [17] Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) — В прошлом выпуске упоминался оригинал, в котором подробно описано текущее состояние реализации функциональной парадигмы в языке PHP, приведен пример использования подсчета общей стоимости корзины покупок в функциональном стиле. На этот раз вашему вниманию хабраперевод.
  • Типажи в PHP: хорошо это или плохо? [18] Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) — Типажи — это конечно же трейты. Именно о них перевод статьи, в которой рассмотрены достоинства и недостатки новой возможности языка PHP.

Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) Материалы для обучения

  • Советы по прохождению 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]. Автор дает пару рекомендаций по улучшению кода.
  • Конфигурируем контейнер служб Symfony для использования Twitter API [31] — Этим постом автор продолжают свою серию об использовании контейнера служб в Symfony 2 (1 [32], 2 [33]). В описанном примере автор использует библиотеку Guzzle HTTP [34] для создания службы привязанной к Twitter API.
  • Логируем согласно PSR-3 для повторного использования [35] — Хороший и подробный туториал по созданию простого логера для вашего приложения следуя недавно принятому стандарту.
  • Как писать код, который готов к изменениям [36] — Отличный пост, в котором сделан обзор всех принципов проектирования и кодирования программного обеспечения, призванных сделать код легко изменяемым и поддерживаемым. Хороший текст дополнен простыми и понятными примерами на PHP.
  • 8 практик по обеспечению безопасности вашего веб-приложения [37] — Очередной пост с классическими рекомендациями по безопасности с примерами на PHP.
  • Легко масштабируем с помощью nginx, memcached, PHP-FPM и APC [38] — Небольшое руководство по масштабированию веб приложения с использованием веб сервера Nginx, memcached, PHP-FPM и APC.
  • Управляем билдами 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]. Свой опыт он подробно изложил в посте.
  • Когда писать плохой код [47] — В небольшой заметке Brandon Savage, автор книг The PHP Playbook [48] и Mastering Object Oriented PHP [49], делится мыслями о том, когда, по его мнению, допустимо писать плохой код. Мысли не новые, но в качестве напоминания полезные.
  • Внедрение зависимости с помощью Pimple [50] — При разработке приложений мы стараемся создавать независимые модули и компоненты для того, чтобы было возможным их повторное использование. Но создавать полностью независимые компоненты сложная задача, и получившиеся зависимости могут создать много проблем, если не находятся под должным контролем. В этом случае внедрение зависимости является отличным решением. В посте рассмотрено использование простой библиотеки реализующей внедрение зависимости — Pimple [51] от одного из разработчиков Symfony.
  • Ускоряем автозагрузку классов с помощью Composer [52] — В посте автор показывает нестандартное решение, которое позволяет увеличить скорость загрузки классов с помощью Composer, создав предварительно символические ссылки на файлы.
  • Комментарии и Doc-блоки в PHP [53] — Небольшой пост о том, как правильно следует комментировать код и составлять Doc-блоки.
  • Composer + Yii + Imagine: небольшое приложение для загрузки картинок [54] Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) — На примере простого приложения автор показывает, как легко и просто можно собрать приложение c помощью Composer, используя стандартный репозиторий Packagist [55].
  • Вход через соцсети: модуль SSO [56] Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) — В статье автор подробно рассказывает о создании модуля авторизации через социальные сети для фремворка Kohana.
  • Composer Stability Flags [57] — Автор рассказывает о том, как в Сomposer работают «флаги стабильности» и о проблемах, связанных со стабильностью версий при использовании Сomposer, кроме того автор призывает разработчиков модулей/расширений тэгировать свои проект и обозначать стабильность своего кода в репозиториях соответствующими ветками.
  • Запросы к MySQL 5.6 из PHP быстрее в 1.5 … 9 раз? [58] — Немного тестов свежей MySQL 5.6.
  • Автоматизированный рефакторинг в большом проекте [59] Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) — Хабрапост, в котором продемонстрирован способ автоматического рефакторинга. На примере phpBB показано, как можно «отрефакторить» вызовы SQL-запросов, чтобы они использовали экранирование входных данных.
  • Ловим фатальные ошибки PHP [60] — Краткий туториал о том, как можно перехватить Fatal Error'ы и красиво их оформить.
  • Об одной малоизвестной уязвимости в веб сайтах [61] Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) — Хабрапост, в котором идет речь о подмене HTTP_HOST и SERVER_NAME. Будьте внимательны и не доверяйте пользовательским данным.
  • Core Concepts: Attack Surface [62] — Автор рассказывает о том, что такое поверхность атаки [63] и как эту самую поверхность можно уменьшить, повысив тем самым безопасность своего приложения.
  • Берегитесь массового присваивания [64] — Немного о том, как важно фильтровать приходящие от пользователя данные, в чем суть проблемы и чем это может быть чревато.
  • Аутентификация с помощью OAuth на PHP [65] — Неплохое введение в использование OAuth в PHP приложениях.
  • Testable Code и SOLID [66] — Совсем недавно в Антверпене прошла конференция PHPBenelux [67]. Автор поста, по совместительству один из докладчиков, выложил слайды двух своих докладов: Тестируемый Код (PDF) [68] и SOLID (PDF) [69].
  • PHPBenelux Slides [70] — На той же конференции делал доклады Илья Альшанетский. Слайды: Безопасность веб-приложений (PDF) [71] и Встречаем PHP 5.4 (PDF) [72].
  • Хранение паролей в PHP [73] — Слайды и материалы доклада от Anthony Ferrara все с той же PHPBenelux.
  • Раскрываем магию MySQL или о строгости и мягкости MySQL [74] Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013) — Отличный хабрапост, в котором автор расставляет точки над «загадочным» поведением MySQL.

Ссылка [75] на предыдущий выпуск.
Материал подготовили dbritan [76], nesttor [77] и pronskiy [78]

Автор: alexzfort

Источник [79]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/news/26875

Ссылки в тексте:

[1] Zend Optimizer+ возможно будет включен в PHP 5.5: https://wiki.php.net/rfc/optimizerplus

[2] Расмус Лердорф: http://ru.wikipedia.org/wiki/Лердорф,_Расмус

[3] Зеев Сураски,: http://ru.wikipedia.org/wiki/Сураски,_Зеев

[4] вопрос в php-internals: http://news.php.net/php.internals/65171

[5] 2.0.7, 2.1.0: http://framework.zend.com/blog/zend-framework-2-0-7-and-2-1-0-released.html

[6] 2.1.1: http://framework.zend.com/blog//zend-framework-2-1-1-released.html

[7] набор исправлений: http://framework.zend.com/changelog/2.0.7

[8] Анонсирован стабильный релиз MySQL 5.6: http://habrahabr.ru/post/168441/

[9] заявили о намерении: http://www.zdnet.com/oracle-who-fedora-and-opensuse-will-replace-mysql-with-mariadb-7000010640/

[10] 11й выпуск журнала Web & PHP: http://webandphp.com/issue-11

[11] мышления: http://www.braintools.ru

[12] Бета релиз phpMyAdmin 4.0.0 : http://sourceforge.net/p/phpmyadmin/news/2013/02/phpmyadmin-400-beta1-is-released/

[13] PHP 6 Pissing in the Wind: http://philsturgeon.co.uk/blog/2013/01/php-6-pissing-in-the-wind

[14] скалярных объектов: https://github.com/nikic/scalar_objects

[15] аксессорами: https://wiki.php.net/rfc/propertygetsetsyntax-v1.2

[16] PHP все растет и растет: http://news.netcraft.com/archives/2013/01/31/php-just-grows-grows.html

[17] Функциональное программирование на PHP: http://habrahabr.ru/post/167181/

[18] Типажи в PHP: хорошо это или плохо?: http://habrahabr.ru/post/167153/

[19] Советы по прохождению Zend сертификации: http://7php.com/zend-certification-advice-michelangelo-van-dam/

[20] 2: http://7php.com/zend-certification-advice-lorna-mitchell/

[21] PHPBenelux: http://www.phpbenelux.eu/

[22] Тестируем сериализацию на PHP: http://nitschinger.at/Benchmarking-Cache-Transcoders-in-PHP

[23] igbinary: http://pecl.php.net/package/igbinary

[24] Laravel 4: Создаем RESTful API: http://net.tutsplus.com/tutorials/php/laravel-4-a-start-at-a-restful-api/

[25] Как выполнять асинхронные запросы на PHP: https://segment.io/blog/how-to-make-async-requests-in-php/

[26] Параллельный PHPUnit: http://css.dzone.com/articles/parallel-phpunit

[27] Paratest: https://github.com/brianium/paratest

[28] Doctrine и SOLID: http://www.whitewashing.de/2013/02/04/doctrine_and_solid.html

[29] SOLID: http://ru.wikipedia.org/wiki/SOLID_(объектно-ориентированное_программирование)

[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/

[32] 1: http://gonzalo123.com/2012/09/03/dependency-injection-containers-with-php-when-pimple-is-not-enough/

[33] 2: http://gonzalo123.com/2013/01/14/handling-several-dbal-database-connections-in-symfony2-through-the-dependency-injection-container-with-php/

[34] Guzzle HTTP: http://guzzlephp.org/

[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/

[41] Zend Framework 2 ServiceManager: http://www.maltblue.com/tutorial/zend-framework-2-servicemanager

[42] Dependency Injection: http://www.maltblue.com/articles-2/zend-framework-2-core-concepts-understanding-dependency-injection

[43] Модули и ModuleManager: http://www.maltblue.com/tutorial/zend-framework-2-modules-the-applications-heart

[44] EventManager: http://www.maltblue.com/tutorial/zend-framework-2-event-manager-a-gentle-introduction

[45] Настройка PHP окружения для разработки на VPS: http://www.phpdeveloper.org/news/19106

[46] VPS: https://www.reg.ru/?rlink=reflink-717

[47] Когда писать плохой код: http://www.brandonsavage.net/when-to-write-bad-code/

[48] The PHP Playbook: http://www.amazon.com/PHP-Playbook-Brandon-Savage/dp/0981034543/

[49] Mastering Object Oriented PHP: http://masteringobjectorientedphp.com/

[50] Внедрение зависимости с помощью Pimple: http://phpmaster.com/dependency-injection-with-pimple/

[51] Pimple: http://pimple.sensiolabs.org/

[52] Ускоряем автозагрузку классов с помощью Composer: http://patrickallaert.blogspot.com/2013/01/speeding-up-class-autoloading-with.html

[53] Комментарии и Doc-блоки в PHP: http://unassumingphp.com/intro-to-php-comments-and-docblocks/

[54] Composer + Yii + Imagine: небольшое приложение для загрузки картинок: http://www.simplecoding.org/composer-yii-imagine-nebolshoe-prilozhenie-dlya-zagruzki-kartinok.html

[55] Packagist: http://packagist.org/

[56] Вход через соцсети: модуль SSO: http://brotkin.ru/2013/02/02/sso-demo-app/

[57] Composer Stability Flags : https://igor.io/2013/02/07/composer-stability-flags.html

[58] Запросы к MySQL 5.6 из PHP быстрее в 1.5 … 9 раз?: http://blog.ulf-wendel.de/2013/toying-with-peclmysqlnd_memcache-and-mysql-5-6-memcache-innodb/

[59] Автоматизированный рефакторинг в большом проекте: http://habrahabr.ru/company/badoo/blog/167337/

[60] Ловим фатальные ошибки PHP : http://www.xpertdeveloper.com/2013/01/catch-fatal-errors-in-php/

[61] Об одной малоизвестной уязвимости в веб сайтах : http://habrahabr.ru/post/166855/

[62] Core Concepts: Attack Surface : http://websec.io/2013/01/28/Core-Concepts-Attack-Surface.html

[63] поверхность атаки: http://en.wikipedia.org/wiki/ru.wikipedia.org/wiki/Поверхность_атаки

[64] Берегитесь массового присваивания : http://websec.io/2013/02/04/Beware-the-Mass-Assignment.html

[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

[67] PHPBenelux: http://conference.phpbenelux.eu/2013/

[68] Тестируемый Код (PDF): http://qafoo.com/talks/13_01_phpbnl_testable_code.pdf

[69] SOLID (PDF): http://qafoo.com/talks/13_01_phpbnl_make_your_project_solid.pdf

[70] PHPBenelux Slides: http://ilia.ws/archives/264-PHP-Benelux-Slides.html

[71] Безопасность веб-приложений (PDF): http://ilia.ws/files/benelux_application_security.pdf

[72] Встречаем PHP 5.4 (PDF): http://ilia.ws/files/benelux_php54.pdf

[73] Хранение паролей в PHP: http://blog.ircmaxell.com/2013/01/password-storage-talk-at-php-benelux-13.html

[74] Раскрываем магию MySQL или о строгости и мягкости MySQL: http://habrahabr.ru/post/166411/

[75] Ссылка: http://habrahabr.ru/company/zfort/blog/167127/

[76] dbritan: http://habrahabr.ru/users/dbritan/

[77] nesttor: http://habrahabr.ru/users/nesttor/

[78] pronskiy: http://habrahabr.ru/users/pronskiy/

[79] Источник: http://habrahabr.ru/post/169031/