Обновить
39.01

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга
Уровень сложности

Инвертирование равенства. Как реже стрелять себе в ногу в C-подобных языках

Время на прочтение7 мин
Охват и читатели7.4K

Встав утром и посмотрев в профиль, отметил: на Хабре много лет, писал статьи, писал код. И ни разу не писал о коде на Хабре. А вообще‑то разработчик. Поззорище! Пора исправляться.

Поговорим о классической (и болезненной) проблеме кодирования «присваивание вместо равенства» которая в любой момент может создать очень много проблем. О логическом источнике этой ошибке, и о способах решения.

Ну и ещё слегка вспомним «Звездные войны»:-)

Силу инверсии равенства познай на себе :)

AI для PHP-разработчиков. Часть 4: Практическое использование TransformersPHP

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели11K

AI в PHP: не теория, а место, с которого можно начать

В своей прошлой статье я описал на довольно общем уровне почему тема AI вроде бы везде, но при этом почти не пересекается с повседневной PHP-разработкой. Не потому что PHP "не подходит", а потому что сам разговор обычно идёт мимо наших задач и привычного способа мышления. Ну и, конечно, о том, что почти нет материала, который объясняет AI именно для PHP-разработчиков, их задач и их мышления.

После публикации мне несколько раз задали один и тот же вопрос, в разных формулировках:

Окей, допустим. А с чего конкретно начать?

И это, пожалуй, самый интересный вопрос из тех, что я получил. Ниже я попытаюсь дать на него ответ.

Читать далее

Мультиагентная разработка: от хотелок до продакшена

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели13K

Мультиагентная разработка — это возможность превратить работу с AI из «вайб‑кодинга» в управляемый конвейер: от хотелок до тестов и документации.

В статье я покажу свой «велосипед»: набор специализированных агентов (PO/BA/SA/архитектор/разработчик/тестировщик/техпис) и оркестратор, который гоняет их по пайплайну с изоляцией контекста.

Читать далее

Статанализ — must-have для проектов с Codex/ClaudeCode

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели8.7K

На днях у Кирилла Мокевнина вышел пост про то, как он разлюбил динамическую типизацию. Мысль понятная: на больших кодовых базах отсутствие типов начинает дорого стоить.

Хочу дополнить аргументом, который в 2026 году уже стал прям must-have: статанализ и типы — это лучший self-check для AI-агента.

Современные агенты для разработки (Claude Code на Opus 4.5 и ChatGPT Codex 5.2 High) хорошо пишут код. Ошибок уровня «переменная не объявлена», «импорт забыл», «опечатка в имени метода» по сути уже почти нет. 

Основные промахи чаще про другое:

Читать далее

Адрес без координат — деньги на ветер: внутренняя кухня Address в Bitrix24

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.4K

При работе с Bitrix24 понадобилось сохранить адрес из Google Maps в стандартное поле Address у лида. Не просто строку, а полноценный адрес: с координатами, разбивкой на части и корректной работой всей CRM-логики.

REST API рассматривался первым, но быстро стало ясно, что в этом сценарии неудобен. Нужно было переносить адрес между сущностями Bitrix24, сохраняя связи с модулем location. REST такого контроля не даёт.

При этом в Bitrix24 уже есть стандартное поле address, связанное с Google Maps и модулем location. Оно умеет хранить координаты и структуру адреса, но в документации нет описания, как правильно заполнять его через код.

В статье разберу практический кейс: как сохранить адрес из Google Geocode во внутренние сущности Bitrix24 без REST API и без пользовательского интерфейса.

Читать далее

[Laravel-Telegram] Пример сервиса на Laravel для авторизации пользователя через Telegram в mini-app

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.5K

Авторизация пользователя в Telegram mini-app сейчас как никогда важна. Но что если вам необходимо сделать это в вашей сервисной/микросервисной архитектуре с отправкой смс-кода?

Читать далее

PHP HTML Cleaner: история разработки и обзор Composer-пакета для очистки HTML

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8K

Сегодня я хочу рассказать вам о тот как небольшая задача привела меня к созданию своего первого Composer пакета (ну да, логично, тайтл статьи именно такой :D).

И так, у клиента из 1С, в реквизитах товара, прилетает превью описание такого вида...

Читать далее

Laravel Monitor: мониторинг здоровья вашего Laravel-приложения

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.5K

Laravel Pulse — это пакет для Laravel, который позволяет отслеживать состояние различных компонентов вашего приложения: базы данных, Redis, файловых хранилищ, Horizon, Node.js окружения и даже проверять безопасность зависимостей через Security Checker.

https://gitflic.ru/project/adb/laravel-pulse

В современной разработке критически важно отслеживать состояние всех компонентов приложения. Особенно это актуально для production-окружений, где каждая минута простоя может стоить денег и репутации. Сегодня я хочу рассказать о пакете Laravel Pulse — инструменте для комплексного мониторинга здоровья Laravel-приложений.

Пакет предоставляет:

✅ Команду Artisan для проверки всех компонентов
✅ REST API для получения данных о состоянии системы
✅ Возможность сохранения результатов в базу данных
✅ Интеграцию с системами мониторинга (Zabbix, Nagios и т.д.)

Читать далее

Админ vs студент: разбор тестового задания — сервис консультаций на Laravel за неделю

Уровень сложностиСредний
Время на прочтение30 мин
Охват и читатели15K

Эта статья — подробный разбор тестового задания на позицию PHP-разработчика, которое мне пришлось выполнить в краткие сроки из-за приближающей сессии. Я расскажу, с какими трудностями столкнулся, будучи студентом и новичком в веб-разработке, как построил архитектуру проекта «Школьные консультации» и что из этого вышло. Если вам интересен взгляд «с первоначального этапа» на классическую задачу или вы хотите узнать, чем всё кончилось, или у вас был похожий опыт (о котором вы хотели рассказать), то добро пожаловать.

Читать далее

Как я победил «дрейф контрактов» между бэкендом и тремя клиентами: OpenAPI → SDK → Zod

Время на прочтение9 мин
Охват и читатели7.6K

Когда у тебя несколько клиентов (web + расширение + десктоп), API быстро развивается, а данных много и они сложные — «контракт» между бэком и фронтом начинает дрейфовать.
Я решил это так:

Читать далее

AI для PHP-разработчиков. Часть 3: Практика без Python и data science

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели11K

Про AI сейчас пишут много, мягко говоря. Причём пишут буквально все, кому не лень. Но если вы PHP-разработчик, то, скорее всего, ощущение примерно такое: тема вроде бы важная, но почти всё – не для вас, а двигаться в эту сторону нужно, ибо... ну, вы и сами понимаете.

Большинство материалов сразу уезжают в Python, Jupyter, PyTorch, обучение моделей, математику и датасеты. Даже когда речь идёт не про data science, а про практику – примеры всё равно из другого мира.

Я с этим столкнулся довольно давно, когда попытался понять, как вообще можно использовать AI в обычной PHP-разработке. После нескольких практических кейсов в своих проектах у меня сложилось своё понимание ситуации. Да, я понимаю, что Python сегодня де-факто стандарт в мире машинного обучения, но есть огромное количество ситуаций, когда можно использовать AI или ML из PHP без Python-стека, а кроме того мне, как PHP-разработчику, хочется самому разбираться в теме, а не просто научиться делать API-запросы к OpenAI.

Читать далее

Joomla-дайджест. 2-е полугодие 2025 года

Время на прочтение30 мин
Охват и читатели11K

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

Читать далее

Yii3. Официальный релиз

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели26K

Это случилось! PHP-фреймворк Yii3 официально выпущен после многих лет интенсивной разработки и полировки.

Мы кратко рассмотрим основные моменты этого долгожданного релиза.

Читать далее

Ближайшие события

MoonShine 4: AI-инструменты, Tailwind 4 и новый UI — большой разбор релиза open source админ панели

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели11K

Tailwind 4, дизайн-токены, AI-генерация через Claude Code, Telegram Mini App, модульная архитектура CRUD, 20+ палитр из коробки и генератор собственных. MoonShine 4 большое обновление админ панели для проектов на Laravel и других фреймворках. Вместо часов настройки полей — один промпт. Вместо танцев с CSS — система дизайн-токенов. Вместо мобильного приложения — интеграция с Telegram. За 11 месяцев разработки мы переосмыслили то, как должна создаваться админ-панель в 2025 году. Внутри — полный технический разбор.

Читать далее

Хуки свойств в PHP: геттеры и сеттеры не нужны

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели11K

В версии 8.4 наконец‑то появилась одна из тех фич, о которых давно мечтали многие, — хуки свойств. Что это такое? По сути, это встроенные механизмы get/set для свойств объектов, которые позволяют добавить свою логику при чтении или записи значения прямо внутри определения свойства. Никаких больше громоздких геттеров и сеттеров, никаких загадочных get и set, теперь всё можно сделать красиво и понятно на уровне самих свойств.

Читать далее

Как я ускорил установку PHP-зависимостей в 5 раз с помощью Go

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9.3K

TL;DR

Переписал Composer на Go, получил 3-5x ускорение благодаря параллельной загрузке пакетов и отсутствию PHP runtime overhead. Проект полностью совместим с экосистемой Composer/Packagist (почти, об этом будет подробнее внизу).

Читать далее

Роутинг в BitrixFramework: учимся управлять маршрутизацией запросов

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.8K

Всем привет! У большинства фреймворков, построенных на паттерне MVC, отсутствуют физические страницы, содержащие в себе логику обработки и детали отображения страницы. Все это держится на плечах контроллера, а роутинг уже сопоставляет используемый URL и необходимый экшен контроллера. Считается, что использование физических страниц для отображения контента — по большой части прерогатива CMS, но на самом деле это заблуждение. В данной статье рассмотрим механику работы роутинга в Битрикс.

Читать далее

Обнови ICU в PHP 7.3 intl на Centos 7, если осмелишься

Время на прочтение12 мин
Охват и читатели8.4K

Надеюсь, этот материал вам никогда не понадобится. А если понадобится, то вы уже преисполнились проблемой и полны решимости ее исправить!

Вкратце, новые таймзоны не распознаются старыми библиотеками, а это чревато ошибками и неожиданностями.

Я джва года ждал!

Структура кода в папке Domain по DDD

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели13K

В слое Domain 90% проектов с тактическим DDD забыли о самом главном. Сегодня мы вспомним то о чем забыли или узнаем то чего не знали.

Читать далее

SwooleApp: Легковесный фреймворк для Swoole — разбираем пример приложения

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.7K

Недавнооткрыл миру SwooleApp — минималистичного фреймворка для PHP, построенного на базе Swoole. Если вы уже работали с Swoole напрямую, то знаете, что это мощный инструмент для создания высокопроизводительных приложений, но иногда хочется иметь чуть больше структуры и удобства, чем предлагает чистый Swoole. Именно эту нишу и занимает SwooleApp.

В этой статье я кратко расскажу, что это за проект, как его использовать, и поделюсь ссылкой на рабочий пример приложения, который можно запустить в Docker за несколько минут.

Читать далее