Блог @vudaltsov о разработке на PHP
none и я привык так писать ещё со времён контрибьютинга в Symfony.
Но на новой работе коллеги ставят пробелы. Почитал новый PER Coding Style: "All binary arithmetic, comparison, assignment, bitwise, logical, string, and type operators MUST be preceded and followed by at least one space". Документация подтверждает, что конкатенация относится к строковым операторам. Получается, что если следовать рекомендации, то надо ставить...composer.json в соответсвии со схемой, после чего структура файла становится логичной и узнаваемой. Под капотом, кстати, используется ergebnis/json-normalizer — он решает задачу нормализации JSON в общем случае и может быть полезен сам по себе.
Интеграция в проект предельно проста:
composer req --dev ergebnis/composer-normalize composer normalize git commit -am 'Навёл порядок в composer.json!'Ну и закрепляем наши усилия, добавив в CI-пайплайн
composer normalize --dry-run.
https://github.com/ergebnis/composer-normalize
rp + (r + c + w)(1 - p) < c
c — стоимость выполнения кэшируемой операции,
0 < p < 1 — вероятность попадания в кэш (hit),
r — стоимость чтения и валидации кэша,
w — стоимость записи в кэш.
После упрощения:
r + w(1 - p)
———————————— < c
p
Получается, что кэширование имеет смысл тогда, когда взаимодействие с ним обходится дёшево, а вероятность хита близка к 1.
Как правило, наибольшее внимание уделяют p, подразумевая, что сам кэш достаточно быстрый. Но r не стоит недооценивать. В описанной в начале поста ситуации именно стоимость валидации оказалась слишком высокой, из-за чего кэширование потеряло смысл.0.1.0!
Встречаемся через час на уютном PHP Point!
https://youtu.be/5c0WdgAnH_k@psalm-suppress.
Исправленный сниппет присылайте в личку так же ссылкой на psalm.dev. Решение задачи разберём завтра на PHP-линче в 21:00 (проведём после Подлодки).function phpyh(array &$value): void
{
$value = 1;
}
$value = [];
phpyh($value);
var_dump($value);