Дайджест интересных новостей и материалов из мира PHP (12.02.2013 — 25.02.2013)
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
- Открыт исходный код Zend Optimizer+ — В прошлом выпуске упоминалось заявление Зеева Сураски о возможном включении Zend Optimizer+ в ядро PHP 5.5. Учитывая, что голосование по данному вопросу еще не началось, и уже вышла 5 альфа, а на 7 марта запланирована первая бета версия 5.5, то вероятно Zend Optimizer+ таки не будет включен в ближайшей версии. Но не может не радовать, что код инструмента уже открыт и доступен всем желающим! Репозиторий проекта находится здесь, там же присутствует инструкция по сборке.
- В свет вышли PHP 5.4.12 и PHP 5.3.22 — Очередные обновления и как всегда внутри пачка исправленных ошибок.
- PHP 5.5.0alpha5 — Внеплановый альфа-релиз, который кроме исправлений ошибок содержит небольшие нововведения в API MySQLi и Mysqlnd и несколько других. Полный список изменений тут.
- Zend выпускает Zend Studio 10 — В новой версии IDE, как анонсировалось ранее, упор сделан разработку бэкенда для мобильных приложений и интеграцию с облачными сервисами.
- Релиз Bolt 1.0 — После полугода работы наконец-то выпущена первая стабильная версия CMS, построенной на базе фреймворка Silex и компонентов Symfony.
PHP
- Почему объекты (обычно) обычно используют меньше памяти, чем массивы в PHP — Отличный пост от активного core-разработчика PHP — Никиты Попова. На первый взгляд очевидным кажется, что объекты должны занимать больше памяти, поскольку объект есть не что иное, как массив свойств + некоторая дополнительная информация. Но дело в том, что PHP в большинстве случаев оптимизирует массивную составляющую объекта. Подробнее о том, как же это работает, читайте в посте. Стоит заметить, что написанное актуально только для PHP >= 5.4.
- RFC: Запятая в конце списка аргументов функции — Список элементов массива в PHP можно завершать запятой: array(‘Foo’, ‘Bar’,); что, безусловно, очень удобно. В данном RFC вынесено предложение добавить возможность завершать список аргументов функции запятой по аналогии с массивами: function($foo, $bar,) { };
- Глупая идея для ядра PHP? — Автор поста предлагает включить в PHP некоторый метод, который бы позволял кэшировать состояние приложения между запусками (запросами). В общем, нечто похожее на APC или Zend Optimizer+ но для кэширования объектов и данных, а не опкода. Интересно, но вряд ли когда-либо такое будет.
- Мистический PHP RFC процесс, и как вы можете изменить Web — Для всех, кого интересует, как новые фичи попадают в PHP, автор написал замечательный пост, в котором рассказывает об RFC процессе, делая его более прозрачным для обычных разработчиков. Автор приводит массу полезных советов и рекомендаций для тех, кто хочет принимать участие в разработке языка и кому есть что предложить.
Материалы для обучения
- Анализ узких мест (PDF) — Слайды доклада от core-разработчика PHP Ильи Альшанетского с прошедшей недавно в Лондоне крупнейшей конференции, посвященной PHP — PHPUK 2013.
- Замыкания, лямбда-выражения и анонимные функции — Данные понятия в PHP часто взаимозаменяются, но правильно ли это? В посте автор отвечает на вопрос, в чем же различие между лямбда-выражениями, анонимными функциями и замыканиями, а также, в чем их особенности в PHP.
- RESTful API на ZF2, 2 — Серия статей о построении RESTful интерфейсов вообще и на Zend Framework 2, в частности. В первом посте автор пишет о базовых принципах REST, модели зрелости REST сервисов Ричардсона, Hypertext Application Language и как он может быть использован для определения общей структуры JSON ресурсов. Во второй части рассмотрен такой аспект RESTful интерфейсов, как сообщения об ошибках. Автор пишет о том, что возвращать код ошибки не достаточно и предлагает два возможных решения: vnd.error и API-Problem. В обеих статьях не затронут ZF2, поэтому будут полезны всем.
- Избавляемся от null в PHP — Как часто вам приходится писать что-то вроде if (null === $obj) в вашем PHP коде? Вдохновившись Scala и Google Guava, автор предлагает более элегантное решение с использованием класса-обертки.
- Не используйте PHP библиотеки с известными проблемами — Отличная инициатива от SensioLabs, благодаря которой любой разработчик, использующий Composer для управления зависимостями, имеет возможность автоматически находить потенциальные проблемы с безопасностью с помощью security.sensiolabs.org. Пользователи могут загрузить свой файл «composer.lock», а система проверит зависимости на известные проблемы и выдаст отчет. Кроме того, имеется API на случай, если вы желаете автоматизировать проверку. База уязвимостей выложена на GitHub, и любой желающий может помочь в ее пополнении, просто сделав соответствующий pull-request.
- Безопасность в зависимостях PHP и Composer — Еще немного рекомендаций по безопасности в зависимостях, управляемых с помощью Composer.
- Предотвращаем CSRF атаки — Данный пост, в котором идет речь о генерировании безопасных CSRF-токенов, породил волну обсуждений в сообществе. Автором предложен способ генерирования менее предсказуемых, а значит более безопасных значений. Более подробный взгляд на проблему и на CSRF в целом, сделал в своем посте Anthony Ferrara.
- Тестируем модели в Laravel — Отличный подробный туториал об организации модульного тестирования в Laravel 4.
- Упрощаем генерирование тестовых данных с помощью Faker — В одном из предыдущих выпусков упоминалась полезная библиотека Faker, предназначенная для генерации данных очень похожих на реальные. На этот раз нашему вниманию представлен хороший туториал с примерами по использованию данной библиотеки.
- Интервью с создателем PPI — PHP мета-фреймворка — PPI — это PHP фреймворк, который впитал в себя все лучшее из Zend Framework 2, Symfony2 и Doctrine2. В интервью автор фреймворка отвечает на различные вопросы, например, почему PPI это мета-фреймворк? и что же все-таки значит мета-фреймворк?
- Настройка staging окружения — Отличный подробный туториал, в котором показано, как, используя Vagrant, (CLI для VirtualBox) настроить полностью готовое к использованию staging окружение. Автор максимально приближает конфигурацию к Fortrabbit, однако по аналогии легко скорректировать конфигурацию желаемого окружения под любой другой PaaS/хостинг.
- О создании групп пользователей — Статья, которая была ранее опубликована в журнале php|architect. Автор делится рекомендациями по созданию групп пользователей: поиск местных разработчиков, заинтересованных во встречах; распространение информации через компании, использующие PHP; поиск спонсоров и партнеров и другие.
- Внешние процессы и PHP — Небольшой туториал, в котором речь идет о запуске и использовании внешних процессов с помощью потоков.
- Извлечь отрывок из WAV файла — В статье дан обзор формата WAV и структуры WAV фала, после чего продемонстрировано использование, написанной автором библиотеки Audero Wav Extractor, для вырезания отрывков из WAV файла.
- Вьюшки в Lithium с использованием лейаутов — Небольшой туториал по уходящему корнями к CakePHP фреймворку.
- Парсинг XML с помощью SimpleXML — Простой и подробный туториал для тех, кто еще не сталкивался с парсингом XML на PHP.
- PHP потоки для всего — Еще один небольшой туториал, в котором показана работа с потоками данных в PHP.
- Масштабирование Silex приложений — Небольшой пост о том, как можно использовать YAML для конфигурирования роутинга. Автор приводит код расширения (SilexRouteExtension) и приводит примеры его использования.
- Мои любовь и ненависть к трейтам в PHP — О трейтах в PHP не писал только ленивый. И, тем не менее, еще один пост, в котором автор пишет не только о хороших, но и о негативных сторонах новой возможности.
- Работаем со Slim Middleware — В посте рассказано о том, что такое «middleware» и каким образом PHP микрофреймворк Slim может быть использован в качестве слоя в middleware стэке. В качестве примера приводится реализация кэширующего слоя на Slim. Больше примеров на GitHub.
- 2 php на nginx сервере — Небольшая заметка, в которой автор описывает процесс компиляции PHP версий 5.4 и 5.5 из исходников и настройки nginx сервера для использования разных версий на разных виртуальных хостах.
- Программирование с Энтони — Шаблоны проектирования — Продолжение серии обучающих видео от известного деятеля PHP сцены — Anthony Ferrara. На этот раз тему раскрывает не сам Энтони, а Larry Garfield — один из авторовDrupal 7 Module Development. Все видео из серии тут.
- Аутентификация API: HMAC с открытыми/закрытыми ключами — В статье рассказано о способах валидации запросов к API с помощью пар открытых и закрытых ключей.
- Как мы используем Yii, Yii 2.0 — Совсем недавно в Челябинске прошла Уральская конференция веб-разработчиков. По ссылкам слайды докладов от samdark.
- 24 крутых PHP библиотек, о которых вам следовало бы знать — Подборка хороших библиотек на все случаи жизни: роутинг, кэширование, ORM, бенчмарк, валидация, фильтрация, процессор платежей и многие другие.
- HOWTO: Одна из возможных реализация Модели (MVC) в Zend Framework — Хабрапост, в котором описан способ организации архитектуры приложения на Zend Framework 1.
- Интерфейсы или абстрактные классы? — Если вы сомневаетесь, какой из инструментов ООП выбрать: интерфейс или абстрактный класс для решения конкретной задачи, то вам будет интересен данный пост, в котором автор пишет о преимуществах каждого и дает рекомендации по выбору.
- Обертка PHP класса для просто построения цепочек вызовов — В посте автор показывает простой метод создания обертки для существующего класса, реализующей возможность построения цепочек вызовов а-ля jQuery.
- Не злоупотребляйте внедрением зависимости — В небольшом посте автор на примере показывает, как чрезмерное использование внедрения зависимости может значительно ухудшить код.
- Избегайте оригинального MySQL расширения, 2 — Не секрет, что оригинальное расширение MySQL для PHP безнадежно устарело и, тем не менее, очень часто используется. В данной статье из двух частей сначала описано, что же собственно не так с расширением MySQL, а затем рассмотрены альтернативы: MySQli и PDO.
- PHP5.5: Try/Catch/Finally — Начиная с версии PHP 5.5 в блок try/catch для обработки исключений была наконец-то добавлена поддержка finally. В этой небольшой статье автор демонстрирует примеры использования новой возможности и немного экспериментирует. Например, даже если в try/catch встречается return, блок finally все равно успешно отработает.
- 6 причин почему PHP — хоббит — Не так давно на Quora проскочил вопрос: Если бы была война между языками программирования, кого бы вы подержали и почему?. В одном из ответов каждый язык рассматривался как раса/герой из Властелина Колец. В оригинальном ответе PHP — это орк: «Уродливый парень. Не уважает правила. Головная боль для многих людей, кто управляет ими. Но доминируют на большей части Средиземья. Орки объединяются с Саруманом (C++), чтобы создать нечто под названием HipHop». Автор поста считает, что PHP все-таки хоббит и приводит свои аргументы.
- Полный стандарт кодирования на PHP — Если вам категорически не нравятся принятые стандарты PSR-0,1,2, то обратите внимание на этот «стандарт» — он прекрасен.
Источник: http://habrahabr.ru/
Автор: Роман Понский