Forwarded from Книги для программистов
Книга учит основам работы с Docker за 22 коротких урока, каждый из которых можно пройти за один обед. Да, без ночных марафонов с документацией.
Что разберешь:
🔹 Как запускать приложения в контейнерах на Linux, Windows и macOS. И наконец перестать писать «ну у меня локально работает».
🔹 Создание и публикация Docker-образов. Собрать → упаковать → отправить в реестр — без магии и слёз.
🔹 Мультиконтейнерные приложения. Docker Compose и Kubernetes как инструменты, а не загадочные существа.
🔹 Наблюдаемость. Как добавить метрики и логи, чтобы понимать, что происходит внутри контейнера.
🔹 CI/CD и облака. Запуск контейнеров в Azure и GCP, деплой через GitHub Actions — практично, коротко, по делу.
🔹 Работа с легаси. Да, можно упаковать Windows-приложение в контейнер и не переписывать всё с нуля.
🔹 Оптимизация образов. Скорость, безопасность и размер — чтобы твой Dockerfile не выглядел как мамонт.
Книга хороша тем, что в ней нет «истории технологий» и прочего «бла-бла», которое съедает время. Только практические уроки и лабораторки, которые можно выполнить между созвонами.
🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
PHP-разработчик в мире AI: создаём агентов и внедряем в прод 🐘
Думали, AI — это только Python? На самом деле, главное — это архитектура и API. Мы научим вас строить мультиагентные системы, которые усилят любой проект.
Чему вы научитесь:
— строить «мозг» агента с помощью паттерна
— оркестровать процессы в удобном интерфейсе
— соединять агентов в команды через
— внедрять
Станьте тем, кто не просто пишет код, а создаёт автономные интеллектуальные системы.
Узнать подробности 🚀
Думали, AI — это только Python? На самом деле, главное — это архитектура и API. Мы научим вас строить мультиагентные системы, которые усилят любой проект.
Чему вы научитесь:
— строить «мозг» агента с помощью паттерна
ReAct;— оркестровать процессы в удобном интерфейсе
n8n;— соединять агентов в команды через
CrewAI и AutoGen;— внедрять
RAG для поиска по базам знаний за миллисекунды.Станьте тем, кто не просто пишет код, а создаёт автономные интеллектуальные системы.
Узнать подробности 🚀
💡Совет по Laravel: Отказ как «Не найдено»
При определении шлюзов или политик из соображений безопасности мы часто предпочитаем возвращать код 404 вместо 403. Laravel предоставляет для этой цели метод
Библиотека пхпшника
#vardump
При определении шлюзов или политик из соображений безопасности мы часто предпочитаем возвращать код 404 вместо 403. Laravel предоставляет для этой цели метод
denyAsNotFound() 🚀Библиотека пхпшника
#vardump
🥱9👍2
🚀 Variable Scope, References, Closures &
Граница между «пользователем фреймворка» и инженером, который понимает язык.
Если PHP для вас — не только Laravel-контроллеры, эти концепции обязательны. Они напрямую влияют на читаемость, баги и архитектуру кода.
🧠 1. Область видимости (Scope)
Где переменная живёт и умирает.
• Local — существует только внутри функции
• Global — доступна везде, но требует
• Static — локальная, но помнит состояние между вызовами
📌 Static — ключ к счётчикам, генераторам ID, singleton-паттернам
❌ Global — почти всегда архитектурный запах
🔗 2. Ссылки (
По умолчанию PHP копирует значения.
С
• Передача аргументов по ссылке
• Алиасы переменных
• Опасность в
📌 Используйте осознанно. Ссылки — мощный, но острый инструмент.
🧩 3. Closures — функции с памятью
Анонимные функции, которые можно:
• передавать
• хранить
• выполнять позже
И главное — они помнят контекст, где были созданы.
🎯 4.
Closure не видит внешний scope автоматически.
•
•
📌 Это основа колбеков, фильтров, middleware, event-handlers.
📍 5. Лексическая область видимости
Правило простое, но критичное:
Это объясняет 90% «магических» багов с колбеками.
💻 6. Реальный кейс
Динамические условия, конфигурации, runtime-логика — всё строится на этом.
👉 Читать статью
Библиотека пхпшника
use в PHPГраница между «пользователем фреймворка» и инженером, который понимает язык.
Если PHP для вас — не только Laravel-контроллеры, эти концепции обязательны. Они напрямую влияют на читаемость, баги и архитектуру кода.
🧠 1. Область видимости (Scope)
Где переменная живёт и умирает.
• Local — существует только внутри функции
• Global — доступна везде, но требует
global (плохая практика)• Static — локальная, но помнит состояние между вызовами
📌 Static — ключ к счётчикам, генераторам ID, singleton-паттернам
❌ Global — почти всегда архитектурный запах
🔗 2. Ссылки (
&) — работа с оригинальными даннымиПо умолчанию PHP копирует значения.
С
& — вы работаете с той же памятью.• Передача аргументов по ссылке
• Алиасы переменных
• Опасность в
foreach (&$v) → обязательно unset($v)📌 Используйте осознанно. Ссылки — мощный, но острый инструмент.
🧩 3. Closures — функции с памятью
Анонимные функции, которые можно:
• передавать
• хранить
• выполнять позже
И главное — они помнят контекст, где были созданы.
🎯 4.
use — захват переменныхClosure не видит внешний scope автоматически.
•
use ($var) — захват по значению•
use (&$var) — захват по ссылке📌 Это основа колбеков, фильтров, middleware, event-handlers.
📍 5. Лексическая область видимости
Правило простое, но критичное:
Closure использует переменные из места создания,
а не из места выполнения.
Это объясняет 90% «магических» багов с колбеками.
💻 6. Реальный кейс
array_filter, array_map, usort — без closures + use они бесполезны.Динамические условия, конфигурации, runtime-логика — всё строится на этом.
👉 Читать статью
Библиотека пхпшника
🥱4❤2🔥1
Forwarded from Библиотека задач по PHP | тесты, код, задания
Что выведет данный код?
Anonymous Quiz
11%
Ничего не выведется
28%
one
2%
two
4%
three
16%
onetwo
38%
Возникнет ошибка выполнения скрипта
Как синхронизировать блокчейн и базу данных без расхождений
Одна из ключевых проблем блокчейн-бэкенда — точно отразить on-chain состояние в off-chain базе.
Не «примерно», не «потом поправим», а один в один.
В статье разобран production-подход на PHP:
— создание off-chain сущности до вызова блокчейна
— ожидание подтверждения транзакции в Soroban
— декодирование XDR через Stellar SDK
— корректная работа с I128, timestamp и enum
— маппинг результата смарт-контракта в Doctrine entity
— фиксация как успешных, так и failed-транзакций
Если вы строите off-chain логику поверх Stellar — это обязательный паттерн, а не опция.
🔗 Читать статью
Библиотека пхпшника
Одна из ключевых проблем блокчейн-бэкенда — точно отразить on-chain состояние в off-chain базе.
Не «примерно», не «потом поправим», а один в один.
В статье разобран production-подход на PHP:
— создание off-chain сущности до вызова блокчейна
— ожидание подтверждения транзакции в Soroban
— декодирование XDR через Stellar SDK
— корректная работа с I128, timestamp и enum
— маппинг результата смарт-контракта в Doctrine entity
— фиксация как успешных, так и failed-транзакций
Если вы строите off-chain логику поверх Stellar — это обязательный паттерн, а не опция.
🔗 Читать статью
Библиотека пхпшника
❤1
🗂️Библиотека: разделение базового файла PHPStan
Пакет предназначен для разделения базового файла PHPStan на несколько файлов, каждый из которых соответствует определенному идентификатору ошибки. Это позволяет более эффективно управлять и анализировать ошибки в вашем проекте.
Основные возможности:
🔸Разделение базового файла: Пакет разбивает общий файл
🔸Поддержка форматов: Поддерживаются как форматы
🔗 GitHub
#инструменты
Пакет предназначен для разделения базового файла PHPStan на несколько файлов, каждый из которых соответствует определенному идентификатору ошибки. Это позволяет более эффективно управлять и анализировать ошибки в вашем проекте.
Основные возможности:
🔸Разделение базового файла: Пакет разбивает общий файл
phpstan-baseline.neon на отдельные файлы в директории baselines/, где каждый файл соответствует конкретному идентификатору ошибки.🔸Поддержка форматов: Поддерживаются как форматы
neon, так и php для базовых файлов.🔗 GitHub
#инструменты
👍3❤1😁1
How to: Web3 на PHP (Symfony 7.4) — без магии и костылей
Миф «PHP умер» не подтверждается уже больше десяти лет.
Миф «PHP не подходит для Web3» — из той же категории.
Пока Node.js доминирует во фронтенде dApp’ов, PHP + Symfony стабильно закрывают инфраструктурную часть Web3:
🔸 индексируют on-chain данные в off-chain хранилищах
🔸 управляют enterprise-кошельками и ключами
🔸 связывают Web2-бизнес-логику с Web3-протоколами
В статье разобрана production-ready Web3-интеграция на Symfony 7.4 и PHP 8.3+:
🔹 работа с блокчейном через JSON-RPC
🔹 взаимодействие с ERC-20 контрактами
🔹 аутентификация через Sign-In with Ethereum (без паролей)
🔹 обработка on-chain событий через Symfony Messenger
👉 Полный разбор архитектуры и кода — в статье
Библиотека пхпшника
Миф «PHP умер» не подтверждается уже больше десяти лет.
Миф «PHP не подходит для Web3» — из той же категории.
Пока Node.js доминирует во фронтенде dApp’ов, PHP + Symfony стабильно закрывают инфраструктурную часть Web3:
🔸 индексируют on-chain данные в off-chain хранилищах
🔸 управляют enterprise-кошельками и ключами
🔸 связывают Web2-бизнес-логику с Web3-протоколами
В статье разобрана production-ready Web3-интеграция на Symfony 7.4 и PHP 8.3+:
🔹 работа с блокчейном через JSON-RPC
🔹 взаимодействие с ERC-20 контрактами
🔹 аутентификация через Sign-In with Ethereum (без паролей)
🔹 обработка on-chain событий через Symfony Messenger
👉 Полный разбор архитектуры и кода — в статье
Библиотека пхпшника
👍4🥰2
Хуки свойств в PHP: геттеры и сеттеры не нужны
В PHP 8.4 появилась долгожданная возможность — хуки свойств.
Это встроенная логика чтения и записи значения прямо в объявлении свойства. Без отдельных методов, без шаблонных
Код становится компактнее, выразительнее и проще для сопровождения.
🤔 В чём была проблема раньше
До этого у разработчиков было всего два варианта:
🧱 классический подход с приватными полями и методами доступа;
⚙️ promoted-properties из конструктора — удобно, но без логики.
Минус был общий:
❌ негде аккуратно разместить валидацию;
❌ сложно добавить логирование изменений;
❌ неудобно реализовать ленивые вычисления;
❌ класс быстро разрастался вспомогательными методами.
✨ Что изменилось с хуками
Теперь PHP позволяет перехватывать:
👀 момент чтения свойства;
✍️ момент записи значения.
При этом:
📌 снаружи используется привычный доступ к свойству;
🧠 внутри — чётко определённое место для логики;
🧩 в одном классе можно сочетать обычные свойства и свойства с хуками.
🧮 Виртуальные свойства
PHP 8.4 позволяет создавать свойства без собственного хранилища.
Такие свойства:
🪄 не занимают память;
🔄 вычисляются при каждом обращении;
🧩 выступают как интерфейс к другим данным объекта.
Полезно для:
объединённых представлений данных;
вычисляемых значений;
упрощения публичного API модели.
🧬 Наследование и контроль поведения
Хуки полностью поддерживают наследование:
🔁 поведение можно расширять или переопределять;
🔒 отдельные хуки можно пометить как
🧱 контроль инвариантов остаётся на стороне базового класса.
По возможностям это сопоставимо с методами, но на уровне свойств.
⚠️ Важные ограничения
Есть особенности, которые важно учитывать:
🚫 хуки несовместимы с
🔗 изменение по ссылке может обойти логику записи;
🧪 не все внутренние функции PHP вызывают хуки одинаково.
Это не ошибки, а архитектурные компромиссы.
🔗 Хабр
Библиотека пхпшника
В PHP 8.4 появилась долгожданная возможность — хуки свойств.
Это встроенная логика чтения и записи значения прямо в объявлении свойства. Без отдельных методов, без шаблонных
getSomething() и setSomething().Код становится компактнее, выразительнее и проще для сопровождения.
🤔 В чём была проблема раньше
До этого у разработчиков было всего два варианта:
🧱 классический подход с приватными полями и методами доступа;
⚙️ promoted-properties из конструктора — удобно, но без логики.
Минус был общий:
❌ негде аккуратно разместить валидацию;
❌ сложно добавить логирование изменений;
❌ неудобно реализовать ленивые вычисления;
❌ класс быстро разрастался вспомогательными методами.
✨ Что изменилось с хуками
Теперь PHP позволяет перехватывать:
👀 момент чтения свойства;
✍️ момент записи значения.
При этом:
📌 снаружи используется привычный доступ к свойству;
🧠 внутри — чётко определённое место для логики;
🧩 в одном классе можно сочетать обычные свойства и свойства с хуками.
🧮 Виртуальные свойства
PHP 8.4 позволяет создавать свойства без собственного хранилища.
Такие свойства:
🪄 не занимают память;
🔄 вычисляются при каждом обращении;
🧩 выступают как интерфейс к другим данным объекта.
Полезно для:
объединённых представлений данных;
вычисляемых значений;
упрощения публичного API модели.
🧬 Наследование и контроль поведения
Хуки полностью поддерживают наследование:
🔁 поведение можно расширять или переопределять;
🔒 отдельные хуки можно пометить как
final;🧱 контроль инвариантов остаётся на стороне базового класса.
По возможностям это сопоставимо с методами, но на уровне свойств.
⚠️ Важные ограничения
Есть особенности, которые важно учитывать:
🚫 хуки несовместимы с
readonly-свойствами;🔗 изменение по ссылке может обойти логику записи;
🧪 не все внутренние функции PHP вызывают хуки одинаково.
Это не ошибки, а архитектурные компромиссы.
🔗 Хабр
Библиотека пхпшника
❤4
🎄 С Новым годом, коллеги!
Этот год был насыщенным: релизы, оптимизации, неожиданные баги, долгожданные фичи и много практики с реальными проектами на PHP. Экосистема продолжает развиваться — язык взрослеет, инструменты становятся стабильнее, а требования к качеству кода только растут.
✨ Небольшое напоминание на праздники
Коллеги, давайте в эти дни немного выдохнем.
🧠 Переключимся от дедлайнов и продакшена
☕ Дадим мозгу восстановиться
📚 И, самое главное, спокойно вспомним лучшие посты этого года, начиная с завтрашнего дня
Впереди новый год — с новыми версиями PHP, свежими подходами, более сложными задачами и, надеюсь, более осознанной разработкой.
Спасибо, что читаете, обсуждаете и думаете вместе.
Хороших праздников, чистого кода и спокойных логов 🎆
Библиотека пхпшника
Этот год был насыщенным: релизы, оптимизации, неожиданные баги, долгожданные фичи и много практики с реальными проектами на PHP. Экосистема продолжает развиваться — язык взрослеет, инструменты становятся стабильнее, а требования к качеству кода только растут.
✨ Небольшое напоминание на праздники
Коллеги, давайте в эти дни немного выдохнем.
🧠 Переключимся от дедлайнов и продакшена
☕ Дадим мозгу восстановиться
📚 И, самое главное, спокойно вспомним лучшие посты этого года, начиная с завтрашнего дня
Впереди новый год — с новыми версиями PHP, свежими подходами, более сложными задачами и, надеюсь, более осознанной разработкой.
Спасибо, что читаете, обсуждаете и думаете вместе.
Хороших праздников, чистого кода и спокойных логов 🎆
Библиотека пхпшника
👍8🎉8❤3
🚀 Pipe operator в PHP 8.5 — меньше вложенности, больше читаемости
PHP 8.5 завез мощную штуку — оператор пайпа (|>), и это реально меняет стиль кода.
Раньше:
Или ещё хуже — с кучей временных переменных:
Теперь:
Каждая операция читается как шаг рецепта — слева направо. Код становится декларативным, не запутанным и без временных переменных.
🎯 Реальный пример: обработка email'а из формы
🔥 Минимум шума, максимум сути.
Pipe — мелкая синтаксическая штука, но она делает код ближе к тому, как вы мыслите.
С PHP 8.5 пишем как люди.
🐸 Библиотека пхпшника
#лучшее2025
PHP 8.5 завез мощную штуку — оператор пайпа (|>), и это реально меняет стиль кода.
Раньше:
$result = trim(str_shuffle(strtoupper("Hello World")));Или ещё хуже — с кучей временных переменных:
$result = "Hello World";
$result = strtoupper($result);
$result = str_shuffle($result);
$result = trim($result);
Теперь:
$result = strtoupper("Hello World")
|> str_shuffle(...)
|> trim(...);Каждая операция читается как шаг рецепта — слева направо. Код становится декларативным, не запутанным и без временных переменных.
🎯 Реальный пример: обработка email'а из формы
$result = $_REQUEST['email']
|> fn($e) => strtolower($e)
|> fn($e) => filter_var($e, FILTER_VALIDATE_EMAIL)
|> fn($e) => sendEmail($e, "Welcome!");
echo $result ? "Sent!" : "Error";
🔥 Минимум шума, максимум сути.
Pipe — мелкая синтаксическая штука, но она делает код ближе к тому, как вы мыслите.
С PHP 8.5 пишем как люди.
#лучшее2025
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24🤔5🥱1
💾 Новый тренажёр по SQL
Разработчик создал SQL Noir — интерактивную детективную игру, где расследования ведутся с помощью SQL-запросов.
Погружаешься в сюжет и решаешь загадки с реальными SQL-запросами.
🔗 Ссылка
#лучшее2025
Разработчик создал SQL Noir — интерактивную детективную игру, где расследования ведутся с помощью SQL-запросов.
Погружаешься в сюжет и решаешь загадки с реальными SQL-запросами.
🔗 Ссылка
#лучшее2025
❤10👍5
Laravel: Менее известные, но полезные команды Composer
Composer — это основной инструмент для управления зависимостями в PHP. Если вы работаете с Laravel, то наверняка уже знакомы с такими командами, как
1.
Эта команда показывает, какие зависимости вашего проекта устарели. Она выводит список всех пакетов, для которых доступны более новые версии, указывая текущую и последнюю версии. Это удобный способ следить за обновлениями и безопасностью проекта без необходимости сразу обновлять все пакеты.
2.
С помощью этой команды можно получить подробную информацию обо всех установленных пакетах. Кроме того, если указать конкретное имя пакета, можно узнать его описание, текущую версию и зависимости. Например:
Эта команда полезна, когда нужно быстро проверить, какая версия пакета установлена и для чего он нужен.
3.
Если вы хотите понять, почему определённый пакет установлен в проекте, используйте команду
4.
Для проверки лицензий всех установленных зависимостей существует команда
5.
При работе на разных платформах может возникнуть необходимость убедиться, что все необходимые расширения PHP установлены. Команда composer
#лучшее2025
Composer — это основной инструмент для управления зависимостями в PHP. Если вы работаете с Laravel, то наверняка уже знакомы с такими командами, как
composer install и composer update. Однако у Composer есть менее известные, но очень полезные команды, которые могут значительно упростить вашу работу над проектом.1.
composer outdatedЭта команда показывает, какие зависимости вашего проекта устарели. Она выводит список всех пакетов, для которых доступны более новые версии, указывая текущую и последнюю версии. Это удобный способ следить за обновлениями и безопасностью проекта без необходимости сразу обновлять все пакеты.
2.
composer showС помощью этой команды можно получить подробную информацию обо всех установленных пакетах. Кроме того, если указать конкретное имя пакета, можно узнать его описание, текущую версию и зависимости. Например:
composer show backpack/crud
Эта команда полезна, когда нужно быстро проверить, какая версия пакета установлена и для чего он нужен.
3.
composer whyЕсли вы хотите понять, почему определённый пакет установлен в проекте, используйте команду
composer why. Она покажет, какие зависимости требуют установки данного пакета. Это особенно полезно для анализа сложной цепочки зависимостей.4.
composer licensesДля проверки лицензий всех установленных зависимостей существует команда
composer licenses. Она помогает убедиться, что все используемые пакеты соответствуют необходимым требованиям по лицензированию, что особенно важно при работе с открытым исходным кодом.5.
composer check-platform-reqsПри работе на разных платформах может возникнуть необходимость убедиться, что все необходимые расширения PHP установлены. Команда composer
check-platform-reqs проверяет, соответствует ли ваша система требованиям, указанным в composer.json. Она также проверяет версию PHP и расширения.#лучшее2025
😁4👍3❤2
👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа
А также примеры того, как говорить точно не надо 🌚
👉Читать
#лучшее2025
А также примеры того, как говорить точно не надо 🌚
👉Читать
#лучшее2025
❤1
PHP и AI-агенты: современный стек для 2026 года
Думаешь, AI — это только про Python? Современный PHP-разработчик должен уметь интегрировать автономные системы в свои проекты. Пока все празднуют, изучи то, что выделит тебя на рынке в новом году.
На курсе «Разработка AI-агентов» ты научишься:
— строить ReAct-агентов, которые сами выполняют задачи;
— оркестровать флоу через n8n и связывать их с PHP-бэкендом;
— внедрять протокол MCP для командной работы агентов;
— использовать RAG для поиска по документации.
🎄 До 12 января забирай курс в рамках акции «3 в 1» (ещё 2 курса в подарок).
Апгрейднуть карьеру
Думаешь, AI — это только про Python? Современный PHP-разработчик должен уметь интегрировать автономные системы в свои проекты. Пока все празднуют, изучи то, что выделит тебя на рынке в новом году.
На курсе «Разработка AI-агентов» ты научишься:
— строить ReAct-агентов, которые сами выполняют задачи;
— оркестровать флоу через n8n и связывать их с PHP-бэкендом;
— внедрять протокол MCP для командной работы агентов;
— использовать RAG для поиска по документации.
🎄 До 12 января забирай курс в рамках акции «3 в 1» (ещё 2 курса в подарок).
Апгрейднуть карьеру
🔗Реализация паттерна Chain of Responsibility на примере котиков в PHP
Если вы когда‑нибудь пытались настроить бизнес‑логику в своём проекте так, чтобы она не выглядела как свалка if-else и работала хорошо, то этот материал для вас.
Сегодня вы узнаете один из самых приятных паттернов — Chain of Responsibility, или «Цепочка обязанностей».
👉Хабр
Библиотека пхпшника
#лучшее2025
Если вы когда‑нибудь пытались настроить бизнес‑логику в своём проекте так, чтобы она не выглядела как свалка if-else и работала хорошо, то этот материал для вас.
Сегодня вы узнаете один из самых приятных паттернов — Chain of Responsibility, или «Цепочка обязанностей».
👉Хабр
Библиотека пхпшника
#лучшее2025
❤1🤔1
PVM — менеджер версий PHP
Простой bash-скрипт для управления несколькими версиями PHP в Unix-системах(в том числе MacOS).
Установка через Curl:
🔗Github
#лучшее2025
Простой bash-скрипт для управления несколькими версиями PHP в Unix-системах(в том числе MacOS).
Установка через Curl:
curl -o /usr/local/bin/pvm https://raw.githubusercontent.com/smoqadam/pvm/main/pvmchmod +x /usr/local/bin/pvmexport PATH="$HOME/.pvm/current:$PATH»🔗Github
#лучшее2025
👍6❤1👾1