Свежая подборка со ссылками на новости и материалы. В выпуске: игра-головоломка, Yii 2.0.14, PHP-DI 6.0 и другие релизы, предложение о неизменяемых классах из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!
Новости и релизы
- Yii 2.0.14 — Под капотом больше сотни улучшений и исправлений почти во всех компонентах фреймворка. Кроме того, это последний релиз в версии Yii 2.0, содержащий улучшения. В дальнейшем core-команда сконцентрирует силы на разработке версии 2.1.
- PHP-DI 6.0 — Добавлена компиляция контейнера и другие улучшения.
- В nginx 1.13.9 добавлен HTTP/2 Server Push — Пара примеров использования с PHP тут и тут.
- Sylius v1.1.0
PHP Internals
- [RFC] Immutable classes and properties — Предлагается реализовать неизменяемые классы и свойства:
immutable class Email { public $email; public function __construct ($email) { $this->email = $email; } } $email = new Email("foo@php.net"); $email->email = "bar@php.net" // Call will result in Fatal Error
class User { private $id; public immutable $email; public function __construct ($id, $email) { $this->id = $id; $this->email = $email; } }
Инструменты
- rest-control/rest-control — Инструмент для тестирования и валидации REST-сервисов.
- fredsted/webhook.site — Полезный инструмент для тестирования вебхуков.
- php-school/cli-menu — Интерактивные меню для командной строки.
Материалы для обучения
Symfony
- Ускоряя роутер Symfony, 2 — О технических деталях реализации 77-кратного ускорения роутера. Немного бенчмарков на реальном приложении.
- PaEndpointBundle — альтернатива контроллерам Symfony
- Неделя Symfony #581 (12-18 февраля 2018)
- Неделя Symfony #582 (19-25 февраля 2018)
Yii
Laravel
- spatie/laravel-csp — Небольшой пакет для работы с заголовками Content Security Policy.
- voten-co/voten — Клон Reddit на Laravel.
- jshannon63/laravel-psr15-middleware — Адаптер для использования PSR-15 middleware в Laravel. Пост в поддержку.
- 5 хелперов Laravel, которые упростят жизнь
- larastream.com — Как Twitch только для Laravel.
Async PHP
- Асинхронный PHP: Зачем?
- Промисы Amp: от генераторов до корутин
- Быстрый Web-парсинг с помощью ReactPHP — Есть перевод.
- clue/php-mq-react — Легковесная мини-очередь, реализованная на ReactPHP.
CMS
- Критические уязвимости в Drupal 7.x, 8.4.x
- Migrate API и с чем его едят. На примере миграции форума Drupal 7. Часть 1
- CleanTalk, запуск WordPress Security
- О неправильном понимании принципа DRY
- Фабрика как сервис
- О реализации аналога pipe-оператора в юзерлэнд PHP
- Моки на архитектурных границах — О том где и когда лучше использовать моки.
- Отладка PHP с помощью Xdebug: руководство 2018
- Об использовании WebDriver из BotMan для реализации веб-API для чатбота.
- Мутационное тестирование в больших PHP-проектах с помощью Infection.
- Data-driven тестирование в PHPUnit
- Обработка вебхуков с помощью Serverless PHP
- PSR-7 фреймворк: Шаблонизаторы и вёрстка
- Разворачиваем автоматизацию за пару часов: PHPUnit, Selenium, Composer
Занимательное
- returntrue.win — Игра-головоломка по РНP, в которой требуется передать такой аргумент в функцию, чтобы она вернула true. Возможны несколько вариантов ответов.
Скрытый текст
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 125
Комментарии (17)
xotey83
26.02.2018 13:27returntrue.win — простенькая штука. На все 11 вопросов достаточно легко ответил. Только 6-й заставил немного подумать.
gro
26.02.2018 19:28В дополнения к иммутейблам бы ещё какой-нибудь модификатор, типа, изнутри свойство менять можно, а снаружи оно доступно только для чтения.
pronskiy Автор
26.02.2018 21:52Было интересное предложение по аксессорам несколько лет назад wiki.php.net/rfc/propertygetsetsyntax-v1.2
Xakki
Может кто нибудь привести пример реального использования immutable, где private и protected не применимо?! Я уже голову сломал в догадках.
negasus
Думается, только сокращение кода — не писать геттеры на не-public свойства, а просто immutable
VolCh
Плюс гарантии неизменяемости, в том числе при наследовании.
VolCh
Скорее не "private и protected неприменимо", а "писать меньше кода с гарантиями неизменяемости и идентичности по значению на уровне языка".
AlexLeonov
Я могу. Value-objects.
VolCh
VO, DTO и т. п. вполне реализуются на private+setters, но RFC предлагает для тех же целей писать меньше кода и получать больше гарантий неизменяемости.
Fesor
мне больше понравилась идея вернуть by value объекты из php4 (естественно не для всего а только для того что отмечено кейвордом).
igordata
Похоже, что пример реального использования immutable — как раз выкидывание фатала, если где-то случайно происходит изменение того, что нельзя было менять, например айдишника юзера. Именно в невозможности это сделать и есть радость от immutable, дарующая душевное спокойствие тимлидам. Получается так.
VolCh
Сравнение по значению
qRoC
1) Более наглядно что объект неизменяемый;
2) если свойство — указатель на другой класс, то ни геттеры ни ограничение доступов не спасёт;
3) COW (фантазии?).