Дайджест интересных новостей и материалов из мира PHP за последние две недели №11 (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, то обратите внимание на этот «стандарт» — он прекрасен.


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

    Zfort Group
    Компания
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 17

      +2
      Вот тут rmcreative.ru/blog/post/slaydy-s-uwdc-2013 некоторые комментарии по поводу моих слайдов с UWDC.
        +3
        Сколько уже можно про новые расширения mysql, уже сколько раз говорили что старое расширение до сих пор не плохо, нигде не устарело и часто работает быстрее. По пунктам:
        1. Обязательное указание db_link в mysqli. В 99% приложениях используется одно соединение с базой данных, и здесь вполне хватает старого mysql где оно optinal.
        2. Prepared Statements. Бесполезны с точки зрения быстродействия, даже вредны. Полезны только если использовать какой-нибудь PHPDaemon где один вечноживущий процесс php и где prepared statements не будут исчезать на каждый запрос.
        3. Multiquery. Да, это хорошо. Но часто ли есть необходимость использовать множественные запросы, не проверяя результат выборки между ними? А для множественных INSERT можно обойтись и одним INSERT со множеством значений для вставок, а также вариациями IGNORE и ON DUPLICATE KEY UPDATE (большинство о них почему-то забывает и хотят использовать более медленные multiquery).
        4. Транзакции. Приведёт неудачный пример, можно было обойтись одним словом INSERT IGNORE. Да и обычные SQL SET AUTOCOMMIT=0 и BEGIN/COMMIT/ROLLBACK тоже никто не отменял.
          +2
          ext/mysql устарел по той причине, что разработчики не хотят поддерживать аж три mysql-расширения. Все остальные причины надуманные.
          0
          Автор поста предлагает включить в PHP некоторый метод, который бы позволял кэшировать состояние приложения между запусками (запросами). В общем, нечто похожее на APC или Zend Optimizer+ но для кэширования объектов и данных, а не опкода. Интересно, но вряд ли когда-либо такое будет.


          Так уже сейчас можно. Этот процесс называется «демонизацией». Для больших фреймворков (время bootstrap > 30% от времени обработки запроса) — очень актуально. Как раз прорабатываю один из вариантов.
            0
            PHPDaemon есть. Но ни одной CMS/Framework пока нет которая его поддерживает.
              +2
              см. Ratchet. Работает на базе React. Впилить можно в принципе куда угодно. К тому же недавно видел статью "Handling Symfony2 Events Asynchronously". Там через ZeroMQ реализовать предлагают. Короче интересная тема :-)
                0
                Yii прекрасно работает с PHPDaemon.
              0
              security.sensiolabs.org — действительно полезная вещь.
                +1
                Как-то вы релизы Symfony2 вообще игнорируете.
                  +1
                  Минорные релизы и беты вообще редко включаем в дайджест, потому как много их слишком и обычно в них мало интересного. Или о каких именно вы релизах?
                    –2
                    Погодите, за две недели вышла пара RC-релизов. А на этой неделе должна стабильная выйти.
                      +2
                      Именно поэтому и решили не анонсировать RC, а дождаться полноценного релиза.
                  +4
                  Даешь дайджест слонов-игрушек из мира PHP!
                    0
                    Про объекты и массивы в 5.4 действительно интересно!
                      0
                      Глупая идея для ядра PHP? — Автор поста предлагает включить в PHP некоторый метод, который бы позволял кэшировать состояние приложения между запусками (запросами). В общем, нечто похожее на APC или Zend Optimizer+ но для кэширования объектов и данных, а не опкода. Интересно, но вряд ли когда-либо такое будет.

                      Так ведь данные можно кэшировать в APC в разделяемую память — есть функции apc_store() / apc_fetch(), или я не так понял и речь про что другое?
                        0
                        Ресурсы так точно не сохранишь, для объектов с сериализацией мучаться надо. Ну и если делать подобное в PHP-style, то это по идее должна быть какая-то суперглобальная переменная типа $_PERSIST['app_key']['var_name'], к которой все тут же напишут кучу ООП и не очень врапперов :)
                        0
                        Спасибо за наводку на Faker.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое