Пых
رفتن به کانال در Telegram
Блог Валентина Удальцова о разработке на PHP. Хобот @phpyhobot https://youtube.com/@phpyh https://vkvideo.ru/@phpyh https://t.me/isPHPdying Статистика: https://t.me/INOTAROBOT?start=st1219340804 Для связи используйте личные сообщения канала.
نمایش بیشتر8 117
مشترکین
+724 ساعت
+37 روز
+2330 روز
آرشیو پست ها
8 117
Repost from Терменвокс 🎧
Wikipedia, ВКонтакте, WordPress и даже PornHub — всё это когда-то выросло на PHP. Язык программирования, который все давно «похоронили», продолжает спокойно держать половину интернета.
В новом выпуске подкаста «Программный комитет» вместе с разработчиком и автором телеграм-канала «Пых» Валентином Удальцовым разбираемся, почему PHP до сих пор живее всех живых, кто пишет на нём современные продукты и зачем компании продолжают вкладываться в его развитие.
▶️ Смотреть | ▶️ Слушать
😮 Мы снимали этот подкаст на международной IT-конференции «Стачка»! В этом году она пройдёт 10-11 апреля в Ульяновске и 3-4 октября в Петербурге.
8 117
Кстати, мне тут подсказали, что библиотека Feolius/hell2shape с сегодняшнего стрима написана с явным участием LLM: .clinerules, memory-bank. У меня глаз пока не намётан на такое, я даже не заметил.
В целом, аболютно всё равно, кто писал код. Главное, что мы хорошо провели время и много всего узнали.
Зато я не сомневаюсь что говённый Symfony ObjectMapper с прошлого линча написан от руки...
8 117
PHP-линч #30 через час!
Чуть позже здесь будут ссылки на трансляции.
Сегодня снова не Yii3, потому что забыл заанонсить заранее. 😭
8 117
Думаю новый поток Хардкорного курса прочитать уже про асинхронный PHP. Вместо Symfony возьмём AMPHP и Thesis и научимся работать с неблокирующим I/O. Что скажешь?
8 117
Сегодня наконец-то PHP-линч #29!
Я открываю новый сезон знаменитой рубрики PHP-линч! Сам по ней невероятно соскучился.
Хотелось бы сразу посмотреть на Yii3, но лучше мы в этот раз разогреемся чем-то поменьше, а, например, в следующую среду весь стрим посвятим Yii.
Залетайте в 19:00 на 📹 YouTube и 📹 VK Видео.
#php_линч
8 117
Знакомство с новыми авторами PHPeople
У меня в офисе наконец-то появился проводной интернет, и я запускаю сезон стримов на Пыхе!
Для начала сегодня в 19:00 встретимся с новыми авторами PHPeople:
• Александр Макаров — всемирно известный лидер команды Yii,
• Пётр Мязин — автор Пятиминутки, перешёл с PHP на ИИ,
• Павл Бучнев — фартанист и вайб-кодер,
• Вадим Дворовенко — знает Laravel как Тейлор, но ещё не лысый,
• Edmond Dantes — разрабатывает асинхронный PHP будущего.
Чуть позже объявлю, когда будет первый PHP-линч и Open Source Цех.
📹 YouTube | 📹 VK Видео | 🐘 PHPeople
8 117
🗺️ ClassMap: типизируем опции, конфиги, атрибуты
Друзья, я понял, что из тизера и описания многие не поняли, о чём моя новая лекция.
Поэтому вместо лишних слов я выкладываю первые 11 минут материала, где я подробно демонстирую проблематику и формулирую задачу.
📹 YouTube | 📹 VK Видео | 💙 Лекция целиком
8 117
🗺️ ClassMap: типизируем опции, конфиги, атрибуты
Новая платная лекция в Пых Лектории!
В ней мы изучим расширяемый и типобезопасный способ передачи конфигурации между компонентами.
Для этого мы возьмём популярную библиотеку Symfony, обнаружим три проблемы, связанные с передачей нетипизированных опций, рассмотрим сначала неоптимальные подходы, а затем, вооружившись паттерном ClassMap, получим исчерпывающее решение.
В конце проанализируем плюсы и минусы паттерна ClassMap для понимания области его применения.
Также лекция затрагивает следующие темы:
• проектирование расширяемых ООП-компонентов,
• иммутабельность,
• дженерики,
• клонирование в PHP 8.5.
Залетай в Хобота, чтобы посмотреть!
8 117
Переменные среды в Docker Compose
Разобравшись с переменными уровня хоста, мы готовы обсудить второй уровень.
2. Переменные Docker-сервиса
По умолчанию сервис не получает никакие переменные среды с хоста. Мы можем их прокинуть, используя ключи
environment и env_file.
environment можно оформить как объект:
php:
environment:
DB_HOST: postgres
STORAGE_PATH: ${STORAGE_PATH}
или как массив:
php:
environment:
- DB_HOST=postgres
- STORAGE_PATH=${STORAGE_PATH}
Тут возникает интересный момент со значениями по умолчанию. Допустим, в контейнере крутится приложение на Symfony, которое обрабатывает отсуствие переменной среды STORAGE_PATH с использованием процессоров:
$di->parameters()
->set(
'storage.default_path',
'%kernel.project_dir%/var/storage/%kernel.environment%',
);
$di->services()
->set(Storage::class)
->args([
'path' => env('STORAGE_PATH')
->default('storage.default_path')
]);
Если в compose.yaml прописать STORAGE_PATH=${STORAGE_PATH:?/app/var/storage/dev}, это будет не то же самое. Без значения по умолчанию тоже нельзя оставить переменную, иначе Docker выдаст предупреждение и присвоит переменной пустую строку.
Решение, конечно же, есть в документации, но его легко не заметить:
Environment variables can be declared by a single key (no value to equals sign). In this case Compose relies on you to resolve the value. If the value is not resolved, the variable is unset and is removed from the service container environment.
php:
environment:
- STORAGE_PATH: ${STORAGE_PATH}
+ STORAGE_PATH:
или
php:
environment:
- - STORAGE_PATH=${STORAGE_PATH}
+ - STORAGE_PATH
По сути, это самый верный и простой способ прокинуть переменные среды с хоста в контейнер "как есть".
У env_file тоже есть несколько интересных нюансов. Например, начиная с Docker 2.24.0, можно объявлять необязательные файлы:
php:
env_file:
- path: .env # required by default
- path: .env.local
required: false
Сами env файлы по умолчанию парсятся в формате Docker: с интерполяцией ${}, двумя вариантами синтаксиса (: и =) и экранированием. Это можно выключить, задав файлу format: raw.
В будущем обсудим, как укротить всю эту нереальную гибкость и выработать best practice.
📁 Документация по environment
📁 Документация по env_file
⸻
🐘 Кстати, этот пост я опубликовал в PHPeople ещё в прошлом году, присоединяйся!8 117
Переменные среды в Docker Compose
Основной момент, который важно понять, — в
docker compose есть два уровня работы с переменными среды.
1. Переменные хоста
Первый уровень — это переменные хоста. Их можно интерполировать в compose.yaml (бывший docker-compose.yml), например:
services:
php:
image: php:${PHP_VERSION}-cli-bookworm
Если запустить docker compose up без PHP_VERSION в среде, получим предупреждение, что такой переменной нет и была использована пустая строка. Дальше, конечно, ошибка: php:-cli-bookworm не является корректной ссылкой на образ.
На уровне синтаксиса тут есть два основных варианта:
# задать значение по умолчанию
image: php:${PHP_VERSION:-8.5}-cli-bookworm
# или превратить предупреждение в ошибку с кастомным текстом
image: php:${PHP_VERSION:?Env variable `PHP_VERSION` is required}-cli-bookworm
Также на этом уровне можно использовать .env файлы. По умолчанию docker compose ищет .env в текущей директории (pwd), затем в директории проекта (где compose.yaml).
Можно явно указать несколько своих .env файлов. Пример с классической схемой .env.local > .env, для отладки используем docker compose config --environment:
echo 'PHP_VERSION=8.4' > .env
echo 'PHP_VERSION=8.5' > .env.local
docker compose --env-file .env \
--env-file .env.local \
config --environment | grep PHP_VERSION
# выведет PHP_VERSION=8.5
Самый высокий приоритет всегда будет у реальных переменных среды:
export PHP_VERSION=8.6
docker compose --env-file .env \
--env-file .env.local \
config --environment | grep PHP_VERSION
# выведет PHP_VERSION=8.6
Про второй уровень, уровень контейнера, расскажу в следующем посте.
📁 Set, use, and manage variables in a Compose file with interpolation
📁 Environment variables precedence in Docker Compose
⸻
🐘 Кстати, этот пост я опубликовал в PHPeople ещё в прошлом году, присоединяйся!8 117
Прямо сейчас на CutCode стрим про Yii3 с создателями!
Залетайте, чтобы обсудить долгожданный релиз и задать вопросы.
https://youtu.be/Ww_f5AhamIU
8 117
Новые авторы и тариф в PHPeople
У нас пополнение!
К нам присоединились пять новых экспертов:
• Александр Макаров — всемирно известный лидер команды Yii.
• Петр Мязин — автор Пятиминутки, перешёл с PHP на ИИ.
• Павел Бучнев — фартанист и вайб-кодер.
• Вадим Дворовенко — знает Laravel как Тейлор, но ещё не лысый.
• Edmond Dantes — разрабатывает асинхронный PHP будущего.
Новый тариф Max
По многочисленным просьбам запустили тариф, который позволяет подписаться на всех авторов сразу со скидкой 33%.
Основная группа + 11 авторских = 1800 1200₽/месяц.
Удобно, если хочешь следить за всеми темами сразу: от Laravel и архитектуры до AI и карьеры.
Если вы уже подписаны на каких-то авторов, то оформление подписки Max остановит все текущие подписки и откроет доступ ко всем авторам.
Что дальше
Возвращаемся в активный режим после праздников:
• регулярный контент от всех авторов,
• возобновляем Random Coffee с этой недели.
Как подписаться
Основная группа: 150₽/мес
Авторская группа: 150₽/мес
Все авторы: 1800 1200₽/мес
👉 @phpeople_bot
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
