TGViewer
Channel Public Channel
Пых

Пых

@phpyh

Блог Валентина Удальцова о разработке на PHP.

Хобот @phpyhobot
https://youtube.com/@phpyh
https://vkvideo.ru/@phpyh
https://t.me/isPHPdying

Статистика: https://t.me/INOTAROBOT?start=st1219340804

Для связи используйте личные сообщения канала.
Subscribers
7.82K
Photos
287
Videos
20
Links
629

Showing posts older than #392 · Back to latest

Older Posts 19 shown
Post #391 7.39K
Маппинг входящих данных на аргументы action-ов

Наконец-то в Symfony это сделали! Теперь всякие RequestMappingBundle будут не нужны.

Предлагаю отлинчевать на следующей неделе. 😉

use Symfony\Component\HttpKernel\Attribute\MapQueryString;
use Symfony\Component\HttpKernel\Attribute\MapRequestPayload;

final class Action
{
public function __invoke(
#[MapQueryString] MyQueryDataClass $query,
#[MapRequestPayload] MyPayloadDataClass $payload,
): Response {
// ...
}
}


https://symfony.com/blog/new-in-symfony-6-3-mapping-request-data-to-typed-objects
Symfony New in Symfony 6.3: Mapping Request Data to Typed Objects (Symfony Blog) Symfony 6.3 introduces two new PHP attributes to map the incoming request data into typed objects like DTOs and validates them automatically.
  • 🔥 62
  • 👍 16
  • ❤ 3
Post #390 6K
Post #389 7.77K
  • 🤡 51
  • 👍 12
  • 💩 10
  • 💅 7
  • 🦄 5
  • 👾 5
  • 🎃 4
  • 🗿 4
  • 🔥 2
  • 🌭 2
  • 💊 2
Post #388 6.72K
<?php

fclose(STDIN);
var_dump(is_resource(STDIN));
Post #387 8.1K
Post #386 6.69K
Post #385 7.53K
Post #384 6.48K
Пых Обещанный опрос по итогам 2022 в русскоязычном PHP-сообществе! При желании в конце можно оставить почту — волей рандома подарим кому-нибудь PHP-слона и классный мерч. Итоги опроса, в том числе подборки лучших статей, докладов и библиотек, появятся в начале…
Итоги 2022 в PHP-коммьюнити

Каюсь! Я совсем забыл выложить результаты опроса PHP-сообщества. Большое спасибо всем, кто принял участие и проголосовал за мой контент! ❤️

https://phpcommunity.ru/2022-php
phpcommunity.ru 2022 год в русскоговорящем PHP-сообществе Итоги третьего ежегодного опроса.
  • 👍 19
  • ❤ 8
  • 🔥 7
Post #382 5.61K
Нужно ли отбивать пробелами оператор конкатенации?

Несколько лет подряд у меня был ответ "нет", потому что в PHP-CS-Fixer concat_space по умолчанию выставлен в 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". Документация подтверждает, что конкатенация относится к строковым операторам. Получается, что если следовать рекомендации, то пробелы надо ставить...
  • 👍 54
  • 🔥 3
  • 😱 1
Post #381 5.85K
Наводим порядок в composer.json

Если вы, как и я, испытываете наслаждение от автоматизированного порядка, могу порекомендовать пакет ergebnis/composer-normalize. Он упорядочивает ключи 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
GitHub GitHub - ergebnis/composer-normalize: 🎵 Provides a composer plugin for normalizing composer.json. 🎵 Provides a composer plugin for normalizing composer.json. - ergebnis/composer-normalize
  • 👍 46
  • 🔥 12
  • ❤ 5
Post #380 5.43K
Initial Pelican — Initial

Субботний оффтоп, важный для меня и, надеюсь, приятный для вас.

Мы с группой Initial Pelican (я в ней играю на барабанах) наконец-то выпустили свой первый альбом «Initial». Его можно послушать на всех стриминговых площадках, кроме Apple Music (если кто-то там работает, попинайте коллег, плиз 😆). Также мы дропнули на YouTube уже второй ролик со студии. Переходите по ссылке, надевайте наушники и смакуйте! Буду ждать ваши впечатления в комментариях.

🎧 Spotify
🎧 Яндекс.Музыка
🎧 YouTube
🎧 VK Музыка
🎧 Мультиссылка на все сервисы
👍 Telegram
YouTube Initial Pelican — Hearth (Studio Video) Initial Pelican — Initial. Released February 25th, 2023 Order album: https://rumedia.io/l/6LUsK/ Guitars & Vocals: Sergey Ivanov Bass: Ivan Loktaev Drums: Valentin Udaltsov Mixing & Mastering: Denis Ivanov
  • 👍 39
  • 🍾 21
  • ❤ 6
  • 👎 6
  • 🔥 5
Post #379 7.27K
Post #378 7.36K
Эффективность кэширования

Недавно на консультации разработчик показывал HTTP-кэширование главной страницы. Мне сразу бросилось в глаза, что для проверки If-Modified-Since в базу делается целая пачка далеко не лёгких запросов с join-ами, которые выясняют, как давно изменялись сущности, участвующие в рендеринге. Я предложил проверить, действительно ли это быстрее, чем просто отдать страницу.

Пару лет назад в докладе Павла Паршикова я познакомился с формулой целесобразности кэширования:

rp + (r + c + w)(1 - p) < c

c — стоимость выполнения кэшируемой операции,
0 < p < 1 — вероятность попадания в кэш (hit),
r — стоимость чтения и валидации кэша,
w — стоимость записи в кэш.

После упрощения:

r + w(1 - p)
———————————— < c
p

Получается, что кэширование имеет смысл тогда, когда взаимодействие с ним обходится дёшево, а вероятность хита близка к 1.

Как правило, наибольшее внимание уделяют p, подразумевая, что сам кэш достаточно быстрый. Но r не стоит недооценивать. В описанной в начале поста ситуации именно стоимость валидации оказалась слишком высокой, из-за чего кэширование потеряло смысл.
  • 👍 73
  • 🔥 17
  • 🤔 8
  • ❤ 3
Post #376 7.16K
Пых Предпраздничная головоломка! Разберём потом на стриме.
  • 😱 49
  • 🤯 17
  • 👍 8
  • 🔥 8
Post #375 6.5K
Предпраздничная головоломка!

Разберём потом на стриме.
  • 💩 48
  • 👍 7
  • 🤔 7
Post #374 7.49K
Пых Варианты нейминга конструктора типов для php-extended-type-system/type. Отличается только имя конструктора, всё остальное одинаковое.
  • 💩 79
  • 👍 9
Post #371 6.68K
Варианты нейминга конструктора типов для php-extended-type-system/type. Отличается только имя конструктора, всё остальное одинаковое.
  • 💩 54
  • 🔥 6
  • 👍 4
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →