Пых

Description
Блог @vudaltsov о разработке на PHP.

На канале не размещается реклама и вакансии. Подробнее: 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

1 month ago

🤝 Встреча с программным комитетом PHP Russia 2022

• У меня есть тема, но я не решаюсь выступить.
• Я выступил на митапе, но не уверен, что мой доклад подходит для конференции.
• Однажды я подал доклад, но его отклонили, больше не хочу.
• Я хотел бы выступить, но, кажется, в нашем высоконагруженном проекте с тремя фреймворками, пятью видами БД, сотней микросервисов и кубернетесом нет ничего интересного.

Пыхарь, если при упоминании слова "конференция" у тебя проносятся такие мысли, то это замечательно, потому что ты без пяти минут докладчик! Мы ждём тебя сегодня в 19:00, чтобы вдохновить, помочь и направить. Буду рад стать твоим ментором и выступить бок о бок в сентябре!

Подробности в канале конференции: https://t.me/PHPRussiaConfChannel/295.

Telegram

PHP Russia Channel

Всем привет, 21 апреля в 19:00 приглашаем на онлайн-встречу с Программным комитетом PHP Russia. Мы принимаем доклады до 25 мая - остается всего месяц, поэтому в четверг расскажем: - про тематические секции, - какие заявки проходят в программу, -…

3 months ago

```
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,
);
```

3 months ago
3 months ago

Ушла из жизни Юлия Insolita

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

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

В память о Юлии предлагаю полистать её блоги на dev.to и medium.

3 months, 1 week ago

fromName для enum

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

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

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

```

enum Locale
{
case ru;
case en;

<pre>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.

3 months, 1 week ago

🤝 PHP Foundation

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

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

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

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

https://opencollective.com/phpfoundation

3 months, 1 week ago

🔴 И мы нааачииинаааееем, заходите!

https://youtu.be/Nx39a7n9KIQ

Полезные ссылки:
Итоги 2021 для PHP-коммьюнити в цифрах и графиках,
Что смотрели и читали по PHP в 2021: список от сообщества.

YouTube

Чем запомнился 2021 год русскоязычному PHP-сообществу — в 3000+ ответах

Подробнее https://phpcommunity.ru/2021-phpВ PHP-сообществе прошел второй ежегодный опрос. Обсудим итоги в лайве: на какой версии сидит сообщество и многие ли...

3 months, 1 week ago

3000+ PHP developers cannot be wrong

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

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

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

https://phpcommunity.ru/2021-php

YouTube

Чем запомнился 2021 год русскоязычному PHP-сообществу — в 3000+ ответах

Подробнее https://phpcommunity.ru/2021-phpВ PHP-сообществе прошел второй ежегодный опрос. Обсудим итоги в лайве: на какой версии сидит сообщество и многие ли...

3 months, 2 weeks ago

Поиск по нескольким словам в проекте

Задача. Найти в проекте все файлы, в которых есть слова 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.

4 months ago

Лето 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