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

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

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

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

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

Дайджест интересных новостей и материалов из мира PHP за последние две недели №11 (12.02.2013 — 25.02.2013) Новости и релизы

  • Открыт исходный код Zend Optimizer+ [1] — В прошлом [2] выпуске упоминалось заявление Зеева Сураски о возможном включении Zend Optimizer+ в ядро PHP 5.5. Учитывая, что голосование по данному вопросу еще не началось, и уже вышла 5 альфа, а на 7 марта запланирована [3] первая бета версия 5.5, то вероятно Zend Optimizer+ таки не будет включен в ближайшей версии. Но не может не радовать, что код инструмента уже открыт и доступен всем желающим! Репозиторий проекта находится здесь [4], там же присутствует инструкция по сборке.
  • В свет вышли PHP 5.4.12 и PHP 5.3.22 [5] — Очередные обновления и как всегда внутри пачка исправленных ошибок [6].
  • PHP 5.5.0alpha5 [7] — Внеплановый альфа-релиз, который кроме исправлений ошибок содержит небольшие нововведения в API MySQLi и Mysqlnd и несколько других. Полный список изменений тут [8].
  • Zend выпускает Zend Studio 10 [9] — В новой версии IDE, как анонсировалось ранее [10], упор сделан разработку бэкенда для мобильных приложений и интеграцию с облачными сервисами.
  • Релиз Bolt 1.0 [11] — После полугода работы наконец-то выпущена первая стабильная версия CMS, построенной на базе фреймворка Silex и компонентов Symfony.

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

  • Почему объекты (обычно) обычно используют меньше памяти, чем массивы в PHP [12] — Отличный пост от активного core-разработчика PHP — Никиты Попова. На первый взгляд очевидным кажется, что объекты должны занимать больше памяти, поскольку объект есть не что иное, как массив свойств + некоторая дополнительная информация. Но дело в том, что PHP в большинстве случаев оптимизирует массивную составляющую объекта. Подробнее о том, как же это работает, читайте в посте. Стоит заметить, что написанное актуально только для PHP > 5.4.
  • RFC: Запятая в конце списка аргументов функции [13] — Список элементов массива в PHP можно завершать запятой: array('Foo', 'Bar',); что, безусловно, очень удобно. В данном RFC вынесено предложение добавить возможность завершать список аргументов функции запятой по аналогии с массивами: function($foo, $bar,) { };
  • Глупая идея для ядра PHP? [14] — Автор поста предлагает включить в PHP некоторый метод, который бы позволял кэшировать состояние приложения между запусками (запросами). В общем, нечто похожее на APC или Zend Optimizer+ но для кэширования объектов и данных, а не опкода. Интересно, но вряд ли когда-либо такое будет [15].
  • Мистический PHP RFC процесс, и как вы можете изменить Web [16] — Для всех, кого интересует, как новые фичи попадают в PHP, автор написал замечательный пост, в котором рассказывает об RFC процессе, делая его более прозрачным для обычных разработчиков. Автор приводит массу полезных советов и рекомендаций для тех, кто хочет принимать участие в разработке языка и кому есть что предложить.

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

  • Анализ узких мест (PDF) [17] — Слайды доклада от core-разработчика PHP Ильи Альшанетского с прошедшей недавно в Лондоне крупнейшей конференции, посвященной PHP — PHPUK 2013.
  • Замыкания, лямбда-выражения и анонимные функции [18] — Данные понятия в PHP часто взаимозаменяются, но правильно ли это? В посте автор отвечает на вопрос, в чем же различие между лямбда-выражениями, анонимными функциями и замыканиями, а также, в чем их особенности в PHP.
  • RESTful API на ZF2 [19], 2 [20] — Серия статей о построении RESTful интерфейсов вообще и на Zend Framework 2, в частности. В первом посте автор пишет о базовых принципах REST, модели зрелости REST сервисов Ричардсона [21], Hypertext Application Language [22] и как он может быть использован для определения общей структуры JSON ресурсов. Во второй части рассмотрен такой аспект RESTful интерфейсов, как сообщения об ошибках. Автор пишет о том, что возвращать код ошибки не достаточно и предлагает два возможных решения: vnd.error [23] и API-Problem [24]. В обеих статьях не затронут ZF2, поэтому будут полезны всем.
  • Избавляемся от null в PHP [25] — Как часто вам приходится писать что-то вроде if (null === $obj) в вашем PHP коде? Вдохновившись Scala и Google Guava, автор предлагает более элегантное решение с использованием класса-обертки.
  • Не используйте PHP библиотеки с известными проблемами [26] — Отличная инициатива от SensioLabs, благодаря которой любой разработчик, использующий Composer для управления зависимостями, имеет возможность автоматически находить потенциальные проблемы с безопасностью с помощью security.sensiolabs.org [27]. Пользователи могут загрузить свой файл «composer.lock», а система проверит зависимости на известные проблемы и выдаст отчет. Кроме того, имеется API на случай, если вы желаете автоматизировать проверку. База уязвимостей выложена на GitHub [28], и любой желающий может помочь в ее пополнении, просто сделав соответствующий pull-request.
  • Безопасность в зависимостях PHP и Composer [29] — Еще немного рекомендаций по безопасности в зависимостях, управляемых с помощью Composer.
  • Предотвращаем CSRF атаки [30] — Данный пост, в котором идет речь о генерировании безопасных CSRF-токенов, породил волну обсуждений в сообществе. Автором предложен способ генерирования менее предсказуемых, а значит более безопасных значений. Более подробный взгляд на проблему и на CSRF в целом, сделал в своем посте [31] Anthony Ferrara.
  • Тестируем модели в Laravel [32] — Отличный подробный туториал об организации модульного тестирования в Laravel 4 [33].
  • Упрощаем генерирование тестовых данных с помощью Faker [34] — В одном [35] из предыдущих выпусков упоминалась полезная библиотека Faker, предназначенная для генерации данных очень похожих на реальные. На этот раз нашему вниманию представлен хороший туториал с примерами по использованию данной библиотеки.
  • Интервью с создателем PPI — PHP мета-фреймворка [36] — PPI — это PHP фреймворк, который впитал в себя все лучшее из Zend Framework 2, Symfony2 и Doctrine2. В интервью автор фреймворка отвечает на различные вопросы, например, почему PPI это мета-фреймворк? и что же все-таки значит мета-фреймворк?
  • Настройка staging окружения [37] — Отличный подробный туториал, в котором показано, как, используя Vagrant [38], (CLI для VirtualBox) настроить полностью готовое к использованию staging окружение. Автор максимально приближает конфигурацию к Fortrabbit, однако по аналогии легко скорректировать конфигурацию желаемого окружения под любой другой PaaS/хостинг.
  • О создании групп пользователей [39] — Статья, которая была ранее опубликована в журнале php|architect. Автор делится рекомендациями по созданию групп пользователей: поиск местных разработчиков, заинтересованных во встречах; распространение информации через компании, использующие PHP; поиск спонсоров и партнеров и другие.
  • Внешние процессы и PHP [40] — Небольшой туториал, в котором речь идет о запуске и использовании внешних процессов с помощью потоков.
  • Извлечь отрывок из WAV файла [41] — В статье дан обзор формата WAV и структуры WAV фала, после чего продемонстрировано использование, написанной автором библиотеки Audero Wav Extractor [42], для вырезания отрывков из WAV файла.
  • Вьюшки в Lithium с использованием лейаутов [43] — Небольшой туториал по уходящему корнями к CakePHP фреймворку.
  • Парсинг XML с помощью SimpleXML [44] — Простой и подробный туториал для тех, кто еще не сталкивался с парсингом XML на PHP.
  • PHP потоки для всего [45] — Еще один небольшой туториал, в котором показана работа с потоками данных в PHP.
  • Масштабирование Silex приложений [46] — Небольшой пост о том, как можно использовать YAML для конфигурирования роутинга. Автор приводит код расширения (SilexRouteExtension) и приводит примеры его использования.
  • Мои любовь и ненависть к трейтам в PHP [47] — О трейтах в PHP не писал только ленивый. И, тем не менее, еще один пост, в котором автор пишет не только о хороших, но и о негативных сторонах новой возможности.
  • Работаем со Slim Middleware [48] — В посте рассказано о том, что такое «middleware» и каким образом PHP микрофреймворк Slim может быть использован в качестве слоя в middleware стэке. В качестве примера приводится реализация кэширующего слоя на Slim. Больше примеров на GitHub [49].
  • 2 php на nginx сервере [50] — Небольшая заметка, в которой автор описывает процесс компиляции PHP версий 5.4 и 5.5 из исходников и настройки nginx сервера для использования разных версий на разных виртуальных хостах.
  • Программирование с Энтони — Шаблоны проектирования [51] — Продолжение серии обучающих видео от известного деятеля PHP сцены — Anthony Ferrara. На этот раз тему раскрывает не сам Энтони, а Larry Garfield — один из авторов Drupal 7 Module Development [52]. Все видео из серии тут [53].
  • Аутентификация API: HMAC с открытыми/закрытыми ключами [54] — В статье рассказано о способах валидации запросов к API с помощью пар открытых и закрытых ключей.
  • Как мы используем Yii [55], Yii 2.0 [56] — Совсем недавно в Челябинске прошла Уральская конференция веб-разработчиков. По ссылкам слайды докладов от samdark [57].
  • 24 крутых PHP библиотек, о которых вам следовало бы знать [58] — Подборка хороших библиотек на все случаи жизни: роутинг, кэширование, ORM, бенчмарк, валидация, фильтрация, процессор платежей и многие другие.
  • HOWTO: Одна из возможных реализация Модели (MVC) в Zend Framework [59] — Хабрапост, в котором описан способ организации архитектуры приложения на Zend Framework 1.
  • Интерфейсы или абстрактные классы? [60] — Если вы сомневаетесь, какой из инструментов ООП выбрать: интерфейс или абстрактный класс для решения конкретной задачи, то вам будет интересен данный пост, в котором автор пишет о преимуществах каждого и дает рекомендации по выбору.
  • Обертка PHP класса для просто построения цепочек вызовов [61] — В посте автор показывает простой метод создания обертки для существующего класса, реализующей возможность построения цепочек вызовов а-ля jQuery.
  • Не злоупотребляйте внедрением зависимости [62] — В небольшом посте автор на примере показывает, как чрезмерное использование внедрения зависимости может значительно ухудшить код.
  • Избегайте оригинального MySQL расширения [63], 2 [64] — Не секрет, что оригинальное расширение MySQL для PHP безнадежно устарело и, тем не менее, очень часто используется. В данной статье из двух частей сначала описано, что же собственно не так с расширением MySQL, а затем рассмотрены альтернативы: MySQli и PDO.
  • PHP5.5: Try/Catch/Finally [65] — Начиная с версии PHP 5.5 в блок try/catch для обработки исключений была наконец-то добавлена поддержка finally. В этой небольшой статье автор демонстрирует примеры использования новой возможности и немного экспериментирует. Например, даже если в try/catch встречается return, блок finally все равно успешно отработает.
  • 6 причин почему PHP — хоббит [66] — Не так давно на Quora проскочил вопрос: Если бы была война между языками программирования, кого бы вы подержали и почему? [67]. В одном из ответов каждый язык рассматривался как раса/герой из Властелина Колец. В оригинальном ответе PHP — это орк: «Уродливый парень. Не уважает правила. Головная боль для многих людей, кто управляет ими. Но доминируют на большей части Средиземья. Орки объединяются с Саруманом (C++), чтобы создать нечто под названием HipHop». Автор поста считает, что PHP все-таки хоббит и приводит свои аргументы.
  • Полный стандарт кодирования на PHP [68] — Если вам категорически не нравятся принятые стандарты PSR-0,1,2 [69], то обратите внимание на этот «стандарт» — он прекрасен.

Ссылка [2] на предыдущий выпуск.
Материал подготовил pronskiy [70]

Автор: alexzfort

Источник [71]


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

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

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

[1] Открыт исходный код Zend Optimizer+: http://habrahabr.ru/post/169447/

[2] прошлом: http://habrahabr.ru/company/zfort/blog/169031/

[3] запланирована: http://news.php.net/php.internals/66149

[4] здесь: https://github.com/zend-dev/ZendOptimizerPlus/

[5] В свет вышли PHP 5.4.12 и PHP 5.3.22: http://php.net/index.php#id2013-02-21-1

[6] пачка исправленных ошибок: http://php.net/ChangeLog-5.php

[7] PHP 5.5.0alpha5: http://php.net/archive/2013.php#id2013-02-21-2

[8] тут: https://github.com/php/php-src/blob/php-5.5.0alpha5/NEWS

[9] Zend выпускает Zend Studio 10: http://www.zend.com/en/company/news/press/395_zend-launches-zend-studio-10-driving-the-next-decade-of-ides

[10] анонсировалось ранее: http://www.zend.com/en/company/news/press/386_zend-unveils-end-to-end-solution-enabling-mobile-first-approach-to-application-development

[11] Релиз Bolt 1.0: http://bolt.cm/newsitem/bolt-10-stable-released

[12] Почему объекты (обычно) обычно используют меньше памяти, чем массивы в PHP: https://gist.github.com/nikic/5015323

[13] RFC: Запятая в конце списка аргументов функции: https://wiki.php.net/rfc/trailing-comma-function-args

[14] Глупая идея для ядра PHP?: http://www.eschrade.com/page/would-this-be-a-dumb-idea-for-php-core

[15] вряд ли когда-либо такое будет: https://twitter.com/kpschrade/status/304267089290620930

[16] Мистический PHP RFC процесс, и как вы можете изменить Web: https://blogs.oracle.com/opal/entry/the_mysterious_php_rfc_process

[17] Анализ узких мест (PDF): http://ilia.ws/files/phpuk_bottlenecks.pdf

[18] Замыкания, лямбда-выражения и анонимные функции: http://unassumingphp.com/closures-lambdas-and-anonymous-functions/

[19] RESTful API на ZF2: http://www.mwop.net/blog/2013-02-11-restful-apis-with-zf2-part-1.html

[20] 2: http://www.mwop.net/blog/2013-02-13-restful-apis-with-zf2-part-2.html

[21] модели зрелости REST сервисов Ричардсона: http://restcookbook.com/Miscellaneous/richardsonmaturitymodel/

[22] Hypertext Application Language: http://stateless.co/hal_specification.html

[23] vnd.error: https://github.com/blongden/vnd.error

[24] API-Problem: http://tools.ietf.org/html/draft-nottingham-http-problem-02

[25] Избавляемся от null в PHP: http://nitschinger.at/A-Journey-on-Avoiding-Nulls-in-PHP

[26] Не используйте PHP библиотеки с известными проблемами: http://fabien.potencier.org/article/67/don-t-use-php-libraries-with-known-security-issues

[27] security.sensiolabs.org: https://security.sensiolabs.org

[28] GitHub: https://github.com/sensiolabs/security-advisories

[29] Безопасность в зависимостях PHP и Composer: http://websec.io/2013/02/18/Safety-PHP-Dependencies-Composer.html

[30] Предотвращаем CSRF атаки: http://www.eschrade.com/page/generating-secure-cross-site-request-forgery-tokens-csrf/

[31] посте: http://blog.ircmaxell.com/2013/02/preventing-csrf-attacks.html

[32] Тестируем модели в Laravel: http://net.tutsplus.com/tutorials/php/testing-like-a-boss-in-laravel-models/

[33] Laravel 4: http://four.laravel.com/

[34] Упрощаем генерирование тестовых данных с помощью Faker: http://phpmaster.com/simplifying-test-data-generation-with-faker/

[35] одном: http://habrahabr.ru/company/zfort/blog/157203/

[36] Интервью с создателем PPI — PHP мета-фреймворка: http://7php.com/interview-ppi-framework/

[37] Настройка staging окружения: http://net.tutsplus.com/tutorials/setting-up-a-staging-environment/

[38] Vagrant: http://www.vagrantup.com/

[39] О создании групп пользователей: http://blog.doh.ms/2013/02/14/of-creating-user-groups-and-physics/

[40] Внешние процессы и PHP: http://css.dzone.com/articles/external-processes-and-php

[41] Извлечь отрывок из WAV файла: http://phpmaster.com/extract-an-exceprt-from-a-wav-file/

[42] Audero Wav Extractor: https://bitbucket.org/AurelioDeRosa/audero-wav-extractor

[43] Вьюшки в Lithium с использованием лейаутов: http://unassumingphp.com/lithium-building-views-using-layouts/

[44] Парсинг XML с помощью SimpleXML: http://phpmaster.com/parsing-xml-with-simplexml/

[45] PHP потоки для всего: http://css.dzone.com/articles/php-streams-everything

[46] Масштабирование Silex приложений: http://gonzalo123.com/2013/02/11/scaling-silex-applications/

[47] Мои любовь и ненависть к трейтам в PHP: http://www.coderslexicon.com/my-love-hate-relationship-with-php-traits/

[48] Работаем со Slim Middleware: http://phpmaster.com/working-with-slim-middleware/

[49] GitHub: https://github.com/codeguy/Slim-Extras

[50] 2 php на nginx сервере: http://tvorzasp.com/blog/2-php-na-nginx-servaka

[51] Программирование с Энтони — Шаблоны проектирования: http://www.youtube.com/watch?v=oi2DDXcI7O4

[52] Drupal 7 Module Development: https://www.packtpub.com/drupal-7-module-development/book

[53] тут: https://www.youtube.com/playlist?list=PLM-218uGSX3DQ3KsB5NJnuOqPqc5CW2kW&feature=view_all

[54] Аутентификация API: HMAC с открытыми/закрытыми ключами: http://websec.io/2013/02/14/API-Authentication-Public-Private-Key.html

[55] Как мы используем Yii: http://www.slideshare.net/samdark/uwdc-2013-yii

[56] Yii 2.0: http://www.slideshare.net/samdark/yii2

[57] samdark: http://habrahabr.ru/users/samdark/

[58] 24 крутых PHP библиотек, о которых вам следовало бы знать: http://tutorialzine.com/2013/02/24-cool-php-libraries-you-should-know-about/

[59] HOWTO: Одна из возможных реализация Модели (MVC) в Zend Framework: http://habrahabr.ru/post/169537/

[60] Интерфейсы или абстрактные классы?: http://www.brandonsavage.net/interfaces-or-abstract-classes/

[61] Обертка PHP класса для просто построения цепочек вызовов: https://coderwall.com/p/dmuoqa

[62] Не злоупотребляйте внедрением зависимости: http://www.theodo.fr/blog/2013/02/dont-overuse-dependency-injection/

[63] Избегайте оригинального MySQL расширения: http://phpmaster.com/avoid-the-original-mysql-extension-1/

[64] 2: http://phpmaster.com/avoid-the-original-mysql-extension-2/

[65] PHP5.5: Try/Catch/Finally: http://www.adayinthelifeof.nl/2013/02/12/php5-5-trycatchfinally/

[66] 6 причин почему PHP — хоббит: http://www.phpclasses.org/blog/post/201-6-Reasons-Why-PHP-is-a-Hobbit.html

[67] Если бы была война между языками программирования, кого бы вы подержали и почему?: http://www.quora.com/Programming-Languages/If-there-is-a-war-of-programming-languages-who-would-you-support-and-why

[68] Полный стандарт кодирования на PHP: http://phpstyleguide.com/

[69] PSR-0,1,2: https://github.com/php-fig/fig-standards/tree/master/accepted

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

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