Получи случайную криптовалюту за регистрацию!

Пых

Логотип телеграм канала @phpyh — Пых П
Логотип телеграм канала @phpyh — Пых
Адрес канала: @phpyh
Категории: Технологии
Язык: Русский
Количество подписчиков: 6.51K
Описание канала:

Блог @vudaltsov о разработке на PHP.
Чтобы поддержать канал, подпишись на Пых Boosted: https://boosty.to/phpyh.
Реклама и вакансии НЕ размещаются.

Рейтинги и Отзывы

4.00

2 отзыва

Оценить канал phpyh и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

2

3 звезд

0

2 звезд

0

1 звезд

0


Последние сообщения 2

2022-02-24 10:27:02
Какой стиль именования лучше всего подходит для кейсов enum?
Anonymous Poll
27%
camelCase
15%
PascalCase
3%
snake_case
54%
SCREAMING_SNAKE_CASE
888 voters2.7K viewsВалентин Удальцов, 07:27
Открыть/Комментировать
2022-02-23 10:57:01
Ушла из жизни Юлия Insolita

Юлия — самая активная участница русского PHP-сообщества. Она контрибьютила в Open Source, возглавляла сообщество Иркутска в Telegram, помогала Роме с дайджестами, комментировала каждый стрим.

По-итальянски insolita означает "необычная", "необыкновенная". Такой Юля и была, такой мы её и запомним.

В память о Юлии предлагаю полистать её блоги на dev.to и medium.
3.2K viewsВалентин Удальцов, 07:57
Открыть/Комментировать
2022-02-15 12:49:08 fromName для enum

Перечисления (енамы) бывают двух типов: чистые и грязные типизированные, со скалярным эквивалентом. Типизированные енамы реализуют интерфейс BackedEnum с дополнительными методами from и tryFrom — они позволяют получить перечисление по его скалярному эквиваленту ($value).

В этом посте мы попробуем добавить аналогичные методы fromName и tryFromName для получения перечисления любого типа по его имени ($name).

Для начала обратим внимание на любопытную фразу в документации: "Для вариантов перечисления применяются те же правила синтаксиса, что и для любой метки в PHP, смотрите Константы". По идее, это означает, что мы можем без рефлексии динамически работать с енамами как с константами. Попробуем!

enum Locale
{
case ru;
case en;

public static function tryFromName(string $name): ?self
{
$constant = self::class.'::'.$name;

if (\defined($constant)) {
return \constant($constant);
}

return null;
}

public static function fromName(string $name): self
{
return self::tryFromName($name)
?? throw new \ValueError(sprintf(
'"%s" is not a valid name for enum "%s"',
$name,
self::class,
));
}
}

Вуаля, работает! https://3v4l.org/EgBB1

Обратите внимание на комментарии @SerafimArts про нюансы использования констант и решение задачи через рефлексию.

P.S.: Задача этого поста — поиграться с перечислениями, чтобы лучше их прочувствовать. Я не призываю так делать. Если при работе с чистым енамом выясняется, что его нужно получать по имени, то лучше поменять такой енам на типизированный и использовать встроенные методы from и tryFrom.
2.4K viewsВалентин Удальцов, edited  09:49
Открыть/Комментировать
2022-02-14 11:40:08
PHP Foundation

С этого дня я ежемесячно перевожу $50 в фонд PHP.

PHP Foundation — это некоммерческая организация, миссия которой — обеспечить долгосрочное развитие PHP. Главный идеолог фонда — Роман Пронский, автор PHP Digest. Запуск проекта стал совместной инициативой JetBrains, Laravel, Symfony, Zend и других компаний.

На текущий момент фонд обработал заявки от разработчиков, которые хотят участвовать в разработке языка, и теперь решает юридические вопросы. Поэтому в графе расходов пока пусто — полноценная работа начнётся после согласования документов. Подробнее читайте в первом апдейте.

Больше о фонде:
• 216-ый выпуск PHP Дайджеста,
• стрим к выходу PHP 8.1,
• блог JetBrains,
• Twitter проекта.

https://opencollective.com/phpfoundation
5.8K viewsВалентин Удальцов, 08:40
Открыть/Комментировать
2022-02-12 11:00:31 И мы нааачииинаааееем, заходите!





Полезные ссылки:
• Что смотрели и читали по PHP в 2021: список от сообщества,
• Итоги 2021 для PHP-коммьюнити в цифрах и графиках.
1.5K viewsВалентин Удальцов, edited  08:00
Открыть/Комментировать
2022-02-11 17:37:57 3000+ PHP developers cannot be wrong

Завтра вместе с Александром Макаровым и Кириллом Несмеяновым подведём итоги 2021 года на стриме!

Разыграем кучу подарков, в том числе бесплатную часовую консультацию со мной.

Начало в 11 по Москве.

https://phpcommunity.ru/2021-php
2.3K viewsВалентин Удальцов, 14:37
Открыть/Комментировать
2022-02-07 09:33:06
Поиск по нескольким словам в проекте

Задача. Найти в проекте все файлы, в которых есть слова employee и department (обязательно оба в любом порядке).

Пишите в комментариях, как вы бы решали эту задачу. Я расскажу, как найти файлы с использованием поиска по регулярному выражению в PhpStorm.

В RegEx можно по-разному обозначить подстроку, но только lookahead и lookbehind позволяют комбинировать условия без определённого порядка. Получается следующий паттерн:

^(?=.*\bemployee\b)(?=.*\bdepartment\b).*$

(?=) — positive lookahead, \b — граница слова, .* — любой символ.

Однако в таком виде в PhpStorm паттерн не сработает, потому что в интерпертации IDE . не включает символ новой строки. Поэтому заменяем . на [\s\S] (любой пробельный или непробельный символ) и получаем рабочий шаблон:

^(?=[\s\S]*\bemployee\b)(?=[\s\S]*\bdepartment\b)[\s\S]*$

Паттерн легко расширяется для поиска любого кол-ва слов.

Источники:
• https://stackoverflow.com/a/4389683,
• https://bit.ly/3LeMPa9.
2.6K viewsВалентин Удальцов, edited  06:33
Открыть/Комментировать
2022-01-24 10:01:38 Пых pinned «Ищу к себе в команду middle/senior разработчика! В Happy Inc мы исследуем вовлечённость и лояльность персонала в крупных компаниях: проводим анонимные опросы, строим сложные отчёты, доставляем их клиентам в различных форматах. У нас модульный монолит без…»
07:01
Открыть/Комментировать
2022-01-22 15:15:12
Лето 2016-ого, «Территория Смыслов».
2.1K viewsВалентин Удальцов, 12:15
Открыть/Комментировать
2022-01-21 10:00:48 Мы перешли на PHP 8.1

Тут могла бы быть история про долгий и сложный переход, но мы просто апнулись одним праздничным днём, и всё...

За это, во-первых, спасибо инструментам статического анализа — с ними мы всегда уверены в forward-совместимости кода. А во-вторых — разработчикам PHP. Минорные и мажорные обновления стали плавными и качественными — большая часть депрекаций появляется и освещается в "СМИ" заранее, а откровенных багов стало очень мало.

Также порадовали зависимости: composer why-not php ^8.1 на нашем проекте быстро стал пустым. Видимо, авторы большинства пакетов ещё в прошлый раз в require поставили ...|^8.0, поэтому к 8.1 они уже были готовы.

Короче, полёт отличный, приглашаю обновиться. Если же пока нет такой возможности, обратите внимание на Rector. Через него можно делать бэкпорт, то есть писать на 8.1, а деплоить, например, 7.4. Сам не пробовал, если кто-то использует такую схему, расскажите про свой опыт, пожалуйста, в комментариях.
____________________

Кстати, я актуализировал вакансию и жду ваши резюме!
3.0K viewsВалентин Удальцов, 07:00
Открыть/Комментировать