Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
- Expressive 1.0.0 — Первый стабильный релиз инструмента от Zend, который позволяет строить веб-приложения на основе PSR-7 middleware.
- CakePHP 3.2.0
- CodeIgniter 4 — О будущем популярного фреймворка.
- Раскрыта информация о критической XSS-уязвимости в Magento
PHP
- RFC: Generalize support of negative string offsets — В некоторых функциях работы со строками поддерживается отрицательное значение позиции. Предлагается реализовать такую возможность во всех соответствующих функциях, а также при обращении к строке как к массиву:
$str = 'text'; echo $str[-1];
- RFC: Add HTTP/2 Support to the CLI Server — Предлагается реализовать поддержку HTTP/2 во встроенном веб-сервере PHP.
Инструменты
- hirak/prestissimo — Плагин Composer для параллельной установки пакетов. Значительно ускоряет установку зависимостей.
- marcioAlmada/yay — Препроцессор для PHP. Позволяет расширять PHP описывая новые возможности в виде макросов. Просто взгляните на примеры.
- filp/whoops 2.0.0 — Красивые и информативные страницы ошибок и необработанных исключений.
- tarantool-php/queue — PHP биндинги для Tarantool Queue. Прислал rybakit.
- thephpleague/commonmark — Парсер Markdown. Видеообзор использования.
- soy-php/soy — Инструмент для запуска задач.
- mvdbos/php-spider — Веб-паук на PHP.
- kohkimakimoto/altax — Инструмент развертывания.
- icicleio/filesystem — Асинхронный доступ к файловой системе.
- ReactiveX/RxPHP — Реактивные инструменты для PHP.
- niutech/node.php — Инструмент позволяет запускать node.js приложение из PHP даже на обычном хостинге.
- movim/movim — Децентрализованная социальная сеть на PHP и на основе протокола XMPP.
- lastguest/pixeler — Отрисовка изображений в консоли юникод-символами.
- jgrossi/corcel — Обертки для использования WordPress с различными PHP-фреймворками.
- thephpleague/tactician — Простая расширяемая командная шина. Пост с примером использования.
- matthiasmullie/scrapbook — Кэш система, поддерживает PSR-6 и имеет адаптеры для Memcached, Redis, Couchbase, APC, SQL.
- nazar-pc/CleverStyle-CMS — Простая CMF. Скринкасты по использованию. Прислал nazarpc.
Материалы для обучения
Symfony
- drgomesp/symfony-docker — Symfony Docker Edition
- DunglasActionBundle: переработанные контроллеры Symfony
- Экспортировать роут Symfony в PDF без дополнительного кода в контроллере
- Symfony2 перехватчик исключений с помощью сервисов или как избежать использования Event Listener
- Форсаж под нагрузкой на Symfony + HHVM + MongoDB + CouchDB + Varnish
Yii
Laravel
- План релизов Laravel
- Feature Flags in Laravel
- AltThree/Bus — Командная шина для Laravel.
- Несколько трюков по работе с Laravel Homestead
- Как использовать миграции Eloquent ORM вне Laravel
- WordPress и Laravel — Несколько инструментов интеграции фреймворка и CMS.
- Подборка ссылок на материалы по фреймворку Laravel на русском языке — Прислал atehnix.
- (The only proper) PDO tutorial — Подробный туториал по PDO.
- Обновление PHP на EdgeRouter Lite — Расмус Лердорф пишет о том, как обновлял PHP до 7 на своем роутере.
- Введение в PHP internals
- Примеры использования генераторов в PHP
- Работаем с генераторами в PHP
- Внедрение зависимостей без контейнера — Пример использования трейта вместо контейнера.
- Исправляем спагетти: как работать с легаси кодом
- О работе с UTF-8 в PHP и MySQL
- Metatesting — Доклад о состоянии и инструментах тестирования в PHP.
- Хорошие практики и трюки Doctrine ORM от Marco «Ocramius» Pivetta
- Автоматизируем тестирование производительности PHP-приложений с помощью Blackfire.io
- Принципы программирования — Часть 1: Уменьшение сложности
- Принципы программирования — Часть 2: Избавляемся от null
- Дайджест интересных материалов из мира Drupal #17
- Объекты в PHP 7
Занимательное
- ramsaylanier/WordPressExpress — WordPress на JavaScript.
- tannernelson/vapor — Веб-фреймворк на Swift, вдохновленный Laravel/Lumen.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Присылайте ссылки на интересные статьи или полезные инструменты, которых не было в PHP-Дайджестах, и ваше имя будет рядом с присланной ссылкой в выпуске.
Прислать ссылку
Быстрый поиск по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 77
Комментарии (8)
Standfest
02.02.2016 12:18+1Внедрение зависимостей без контейнера — Пример использования трейта вместо контейнера.
Очень плохой пример использования трейта. В указанном примере автор статьи якобы избавляется от контейнера и внедряет зависимости через трейт. Но на самом деле зависимости не внедряются, он сам просит их у трейта, который в свою очередь их создает. По факту это то же самое, что сделать в исходном классе метод:
function buildMyDependency() { return new MyDependency(); }
Плохо это тем, что это 1) не внедрение зависимости, а ее создание 2) при юнит тестировании нет возможности смокать эту зависимость, следовательно метод buildMyDependency нормально протестировать невозможно. Единствнное остается смокать сам метод buildMyDependency(), а сама логика этого метода останется непокрытой.
Metus
Что-то laravel со своим расписанием релизов и LTS-версиями стал похож на ubuntu. Нехорошо это.
Fesor
Больше анархии, хаоса и стихийной разработки? Проекты типа такого должны быть с предсказуемым графиком релизов.
Metus
Проекты типа такого должны выпускаться тогда, когда они готовы выпускаться, а не по графику — не пирожки всё таки пекут и не пятилетки за 4 года делают.
И та же убунта это отлично показала своими глючащими раскладками и прочими артефактами. Так показала, что все, кто не ищут приключений, пользуются исключительно LTS-версиями. Некоторые даже не сразу, а после первого патча.
Анархию и хаос скорее вызовет факт что к концу этого месяца должны 100% выкатить релиз.
Metus
Добавлю ещё.
Мне как разработчику на Laravel не обязательны версии каждые 6 месяцев. Мне, как потребителю, нужны стабильные релизы, а выходят они по расписанию или с задержками — не важно. Свои дедлайны разработчики фреймворка могут хранить при себе.
Подобное расписание привлекает неофитов, которые выбирают фреймворк и видят, что новая версия вышла 3-4 месяца назад, после чего бегут туда.
2 версии в 1 год — это исключительно маркетинг для привлечения большего количества разработчиков — не более.
Fesor
Проекты такого типа должны выпускаться строго по графику что бы не задерживать выход новых фич. Я не хочу ждать пока авторы допилят фичу Б хотя мне нужна фича А, а dev-master использовать как-то не гуд.
Это не означает что авторы должны пытаться впихнуть цикл разработки фич в этот график, туда просто попадают те фичи которые успели сделать. Обратная совместимость в минорных релизах все же должна сохраняться, а чистить фреймворк раз в год от депрекейтед функционала тоже весьма и весьма полезно.
В таком случае это плохо говорит о контрибьюторах, которые форсят фичи что бы вклиниться в релиз. Обычно за всем этим жестко следит команда разработчиков.
То что попало в мастер должн быть законченной фичей, с сохранением обратной совместимости относительно текущей ветки. А по рассписанию или абы как теги расставляются — это не важно. Просто по рассписанию проще отслеживать.