Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.3.0 Beta 1, PhpStorm 2018.2, Composer 1.7 и другие релизы, принят стандарт PSR-17, обзор Yii 3.0, альтернативная реализация Fiber API для асинхронных приложений, порция полезных инструментов, и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.3.0 Beta 1 — С первым бета-релизом заканчивается фаза активной разработки, а значит список новых возможностей и изменений в ветке 7.3 можно считать финальным. Следующая бета ожидается 16 августа.
- PhpStorm 2018.2
• Улучшенное автодополнение с учетом пространств имен
• Структурный поиск и замена
• Кастомные шаблоны постфиксного дополнения
• Обновленный интерфейс и поддержка touch bar
• а также новые инспекции и другие улучшения.
- PSR-17: HTTP Factories — Официально принят стандарт, регламентирующий интерфейсы фабрик для создания HTTP-объектов, совместимых с PSR-7.
- PHP 7.2 доступен на Google Cloud Platform
- PHPUnit 7.3 — Среди изменений возможность сначала запускать тесты, которые упали в предыдущем запуске.
- Composer 1.7.0
PHP Internals
- [PHP]: Same Site Cookie — В
setcookie()
и другие функции для работы с куки добавлена возможность передать массив опций, включая поддержку стандарта Same-site Cookie. Реализовано уже в PHP 7.3. - [RFC]: Typed Properties 2.0 — Предложение по типизированным свойствам отложено до следующей мажорной версии PHP, а тем временем Дмитрий Стогов опубликовал результаты бенчмарков для оценки накладных расходов данной возможности.
Инструменты
- spiral/roadrunner — Высокопроизводительный сервер приложений, балансировщик нагрузки и менеджер процессов для PHP реализованный на Go. Можно использовать для запуска PHP на AWS Lambda.
- codeplea/ahocorasickphp — Реализации алгоритма Ахо — Корасик для поиска множества подстрок в строке. Быстрее чем вызов
strpos()
несколько раз, и намного быстрее чем вызовpreg_match_all()
. - chekalskiy/php-bank-db — Библиотека для определения банка по номеру карты. Прислал Илья Чекальский.
- igniphp/framework — Легковесный фреймворк с поддержкой PSR-15, PSR-7, а также запуском на Swoole.
- spatie/phpunit-snapshot-assertions — Инструмент для реализации снэпшот-тестирования на PhpUnit. Сравнивает результаты тестов с предыдущим запуском.
- elgentos/masquerade — Инструмент для анонимизации информации в БД. Из коробки поддерживает Magento 2.
- zendframework/zend-problem-details — Реализует поддержку стандарта "RFC 7807 Problem Details for HTTP API" для PSR-7-приложений, который регламентирует ответы об ошибках.
- formapro/pvm — Мощная библиотека для описания workflow, бизнес-процессов, и просто конечных автоматов. Доступен UI для визуализации.
- Rican7/incoming — Библиотека призвана конвертировать сырые входные данные из любых источников, в строго-типизированные структуры.
- rezozero/mixedfeed — Библиотека позволяет объединить ленты различных социальных сервисов в один фид.
- KikApp — Инструмент позволяет писать нативные приложения для iOS и Android на PHP. У кого-то есть опыт использования?
Материалы для обучения
Symfony
- Неделя Symfony #605 (30 июля — 5 августа 2018)
- Неделя Symfony #604 (23-29 июля 2018)
- LEMP стек c PHP 7 на CentOS 7 + Let's Encrypt в Google Cloud для развертывания приложения Symfony 4
- Symphony Moscow Meetup — Symfoniacs — #15 (Lamoda)
Yii
- Обзор изменений в Yii 3.0
- yiigist.com — Каталог расширений и пакетов для Yii.
- Миграция проекта с yii1 на yii2 через единовременную работу
Laravel
- imanghafoori1/laravel-heyman — Авторизация и валидация естественным языком.
- tillkruss/alfred-laravel-docs — Поиск по документации Laravel с помощью Alfred.
- digitaldreams/laracrud — Генератор CRUD-приложения по имеющейся схеме БД. Видеотуториал .
- Laravel Nova — Taylor Otwell представил платную админ панель для Laravel-приложений. Возможности инструмента описаны в блогпосте и видео.
- Статистика Laravel приложений — на основе данных из Laravel Shift.
- Стайл гайд и лучшие практики для Laravel
Zend
Async PHP
- concurrent-php/ext-async — Активно разрабатывается альтернативная реализация fiberphp/fiber-ext. Помимо низкоуровневого Fiber API, в расширении реализована дополнительная функциональность по управлению асинхронными задачами. Прислал @dmitrybalabka.
- PHP Roundtable Podcast #076: Конкурентность, генераторы, и корутины
- Книга «Изучаем Асинхронный PHP с ReactPHP» — Теперь и на русском.
CMS
- Никогда не используйте тайп-хинт array
- Об использовании TOML — продвинутый формат для конфигурационных файлов.
- Бенчмарки типичных кусков кода в PHP — Одинарные кавычки против двойных, магические методы, JSON vs XML, исключения, и т.п. Разбор косяков подобных тестов, спасибо FanatPHP за наводку.
- О создании бекдора в виде PHP-расширения
- Адаптивный Waveform для вашего аудиосервиса
Занимательное
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 135
Комментарии (14)
FanatPHP
06.08.2018 12:52Роман, спасибо за отличный, как обычно дайджест.
Только одна ссылка вызывает недоумение. Зачем же было эту глупость про "Бенчмарки типичных кусков кода в PHP" включать? То, что лемминги на реддите наголосовали аж 30 попугаев, не делает эту статью менее вредной и хоть сколько-нибудь осмысленной.
Я думал что статьи из серии "какие кавычки быстрее" уже лет 10 как вышли из моды. Это не говоря о том, что даже и по своим собственным стандартам (мерять кривыми руками производительность заведомо бессмысленных кусков кода) качество тестов не выдерживает никакой критики.
pronskiy Автор
07.08.2018 11:39Возможно вы правы, но мне она показалась интересной, тем не менее. Плюс есть ощущение, что выросло новое поколение разработчиков, которые не помнят статей из серии «какие кавычки быстрее» :-) В любом случае, спасибо за критику, учту.
FanatPHP
07.08.2018 16:46Так в том-то и дело что и не должны помнить. Это будет счастье, если вырастет такое поколение. Поскольку сама постановка вопроса неверная, а единственное, что показывают такие тесты — это криворукость тестировщика.
Вот разбор косяков подобных "тестов", как раз на примере данной статьи, https://phpdelusions.net/articles/single_vs_double
Основных проблем две: мало того что сами тесты не имеют ни малейшего смысла, и несут только вред — но автор при этом еще и умудряется накосячить в каждом конкретном тесте, сравнивая теплое с мягким и хронометрируя несуществующий код. Это если внимательно вчитаться в код и пояснения к каждому тесту, а не просто смотреть на цыферки результатов.
VolCh
06.08.2018 13:44> Никогда не используйте тайп-хинт array
Спорное мнение. Особеноо если учесть, что скорее речь о «никогда не используйте array как пользовательский тип». По хорошему надо, наверное, объединить array и ArrayAccess в один тайп-хинт, и проставить либо его, либо iterable в стандартных array функциях.
atamanenko
06.08.2018 19:24Я джва года этого ждал
JSON: A new flag has been added, JSON_THROW_ON_ERROR, which can be used with
json_decode() or json_encode() and causes these functions to throw a JsonException upon an error, instead of setting the global error state that is retrieved with json_last_error(). JSON_PARTIAL_OUTPUT_ON_ERROR takes precedence over JSON_THROW_ON_ERROR. (RFC: wiki.php.net/rfc/json_throw_on_error)FanatPHP
07.08.2018 10:22Ну, строго говоря, чтобы использовать повседневно, все равно придется заворачивать вызов в отдельную функцию — не писать же каждый раз эту простыню. А с отдельной функцией и сейчас можно исключение бросить.
Но новость все равно очень оптимистичная
edvardpotter
07.08.2018 11:32KikApp — Инструмент позволяет писать нативные приложения для iOS и Android на PHP. У кого-то есть опыт использования?
Не получилось затестить. Сообщения с подтверждением не приходит на почту(пробовал mail.ru и gmail).
Alibobaevich
Почему у слона рука из жопы растет?
qnok
Дополнительная лапа — для большей скорости разработки.
sydorenko-vd
Это же php-слон. А то что он розовый и у него хобот как пятая нога не смутило?