Пых
На канале не размещается реклама и вакансии. Подробнее: t.me/phpyh/72.
We recommend to visit

Любите Пророка, читайте салават!
Vkontakte: https://vk.com/ramzan
Twitter: https://twitter.com/rkadyrov
Last updated 1 week, 3 days ago

Телеграм-канал блога "Рупор Тоталитарной Пропаганды"
http://colonelcassad.livejournal.com/
Рожин Борис Александрович - эксперт центра военно-политической журналистики.
Last updated 1 week, 3 days ago
По всем вопросам: @onlinevakansiibot
Last updated 1 week, 2 days ago
🤝 Встреча с программным комитетом PHP Russia 2022
• У меня есть тема, но я не решаюсь выступить.
• Я выступил на митапе, но не уверен, что мой доклад подходит для конференции.
• Однажды я подал доклад, но его отклонили, больше не хочу.
• Я хотел бы выступить, но, кажется, в нашем высоконагруженном проекте с тремя фреймворками, пятью видами БД, сотней микросервисов и кубернетесом нет ничего интересного.
Пыхарь, если при упоминании слова "конференция" у тебя проносятся такие мысли, то это замечательно, потому что ты без пяти минут докладчик! Мы ждём тебя сегодня в 19:00, чтобы вдохновить, помочь и направить. Буду рад стать твоим ментором и выступить бок о бок в сентябре!
Подробности в канале конференции: https://t.me/PHPRussiaConfChannel/295.
Telegram
PHP Russia Channel
Всем привет, 21 апреля в 19:00 приглашаем на онлайн-встречу с Программным комитетом PHP Russia. Мы принимаем доклады до 25 мая - остается всего месяц, поэтому в четверг расскажем: - про тематические секции, - какие заявки проходят в программу, -…

```
enum EnumNaming
{
case camelCase;
case PascalCase;
case snake_case;
case SCREAMING_SNAKE_CASE;
}
dump(
EnumNaming::camelCase,
EnumNaming::PascalCase,
EnumNaming::snake_case,
EnumNaming::SCREAMING_SNAKE_CASE,
);
```

Ушла из жизни Юлия Insolita
Юлия — самая активная участница русского PHP-сообщества. Она контрибьютила в Open Source, возглавляла сообщество Иркутска в Telegram, помогала Роме с дайджестами, комментировала каждый стрим.
По-итальянски insolita означает "необычная", "необыкновенная". Такой Юля и была, такой мы её и запомним.
В память о Юлии предлагаю полистать её блоги на dev.to и medium.
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,
));
}
</pre>
}
```
Вуаля, работает! https://3v4l.org/EgBB1
Обратите внимание на комментарии @SerafimArts про нюансы использования констант и решение задачи через рефлексию.
P.S.: Задача этого поста — поиграться с перечислениями, чтобы лучше их прочувствовать. Я не призываю так делать. Если при работе с чистым енамом выясняется, что его нужно получать по имени, то лучше поменять такой енам на типизированный и использовать встроенные методы from
и tryFrom
.
3v4l.org
Online PHP editor | output for EgBB1
Run your php code online; get statistics, vld output and compare output from all versions.

С этого дня я ежемесячно перевожу $50 в фонд PHP.
PHP Foundation — это некоммерческая организация, миссия которой — обеспечить долгосрочное развитие PHP. Главный идеолог фонда — Роман Пронский, автор PHP Digest. Запуск проекта стал совместной инициативой JetBrains, Laravel, Symfony, Zend и других компаний.
На текущий момент фонд обработал заявки от разработчиков, которые хотят участвовать в разработке языка, и теперь решает юридические вопросы. Поэтому в графе расходов пока пусто — полноценная работа начнётся после согласования документов. Подробнее читайте в первом апдейте.
Больше о фонде:
• 216-ый выпуск PHP Дайджеста,
• стрим к выходу PHP 8.1,
• блог JetBrains,
• Twitter проекта.
🔴 И мы нааачииинаааееем, заходите!
Полезные ссылки:
• Итоги 2021 для PHP-коммьюнити в цифрах и графиках,
• Что смотрели и читали по PHP в 2021: список от сообщества.
YouTube
Чем запомнился 2021 год русскоязычному PHP-сообществу — в 3000+ ответах
Подробнее https://phpcommunity.ru/2021-phpВ PHP-сообществе прошел второй ежегодный опрос. Обсудим итоги в лайве: на какой версии сидит сообщество и многие ли...

3000+ PHP developers cannot be wrong
Завтра вместе с Александром Макаровым и Кириллом Несмеяновым подведём итоги 2021 года на стриме!
Разыграем кучу подарков, в том числе бесплатную часовую консультацию со мной. 🎁
Начало в 11 по Москве.
YouTube
Чем запомнился 2021 год русскоязычному PHP-сообществу — в 3000+ ответах
Подробнее https://phpcommunity.ru/2021-phpВ PHP-сообществе прошел второй ежегодный опрос. Обсудим итоги в лайве: на какой версии сидит сообщество и многие ли...


Поиск по нескольким словам в проекте
Задача. Найти в проекте все файлы, в которых есть слова 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.
Лето 2016-ого, «Территория Смыслов». 😅
We recommend to visit

Любите Пророка, читайте салават!
Vkontakte: https://vk.com/ramzan
Twitter: https://twitter.com/rkadyrov
Last updated 1 week, 3 days ago

Телеграм-канал блога "Рупор Тоталитарной Пропаганды"
http://colonelcassad.livejournal.com/
Рожин Борис Александрович - эксперт центра военно-политической журналистики.
Last updated 1 week, 3 days ago
По всем вопросам: @onlinevakansiibot
Last updated 1 week, 2 days ago