Обновить
64K+

PHP *

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

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

История создания идеального Docker для Laravel

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

Казалось бы, упаковать PHP в контейнер и настроить GitHub Actions - дело пяти минут. Но как часто бывает, реальность оказалась сложнее. Это история о том, как я вернулся к разработке на PHP и решал накопившиеся проблемы с деплоем Laravel-проекта. О том, как готовил Docker-образ, несколько раз переписывал процесс деплоя, находил компромиссы там, где это было возможно, и полностью перестраивал архитектуру там, где компромиссы были неприемлемы.

Читать далее

Неубиваемый PHP: почему в 2025 году этот язык все еще остается одним из самых востребованных

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

Привет! На связи ITQuick — международная IT-компания, специализирующаяся на High-End разработке для среднего и крупного бизнеса. Мы создаем сложные архитектурные решения силами более 120 разработчиков уровня Senior и Senior+.

Сегодня мы поговорим с Альбертом Степанцевым @AlexLeonov — нашим тимлидом и партнером, опытным разработчиком с 20-летним стажем работы на PHP. За его плечами десятки успешных проектов: от небольших сайтов до масштабных корпоративных систем.

— Альберт, давай начнем с того, что уже более 20 лет в IT-сообществе ходит фраза «PHP скоро умрет». Как ты считаешь, почему этого до сих пор не произошло?

— Я помню, как еще в начале 2000-х мои коллеги уверяли, что PHP не переживет появление новых технологий. Тогда язык действительно был довольно примитивным. Но посмотри на цифры: по данным W3Techs на декабрь 2024 года, около 75% всех сайтов в мире работают на PHP. И это не случайно — я на собственном опыте убедился, почему ни Node.js, ни другие технологии не смогли занять его место.

— А с какими предубеждениями против PHP ты сталкиваешься чаще всего?

— Самые распространенные претензии: «Он слишком простой», «Подходит только для новичков» и «Нет серьезных проектов».

Читать далее

Упакуйте свой код правильно

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

В предыдущей статье «Как организовать структуру приложения» обсуждались различные подходы к организации кода, включая монолитную архитектуру, многослойную архитектуру и принципы чистой архитектуры. В ней я  акцентировал внимание на важности понятной структуры кода, которая облегчает понимание, внедрение новых функций и снижает вероятность ошибок. Особое внимание уделялось критериям понятности, таким как чёткое назначение файлов и папок, разделение логики по модулям или функциональным зонам, использование самодокументируемых названий и соблюдение стандартов кодирования. Также были рассмотрены проблемы, возникающие при неструктурированной организации кода, такие как сложность навигации, отсутствие модульности и нарушение принципов SOLID и GRASP.

Читать далее

Взгляд на JWT как на инструмент построения стройной архитектуры приложения

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

Три года назад мне поручили задачу по распилу сразу двух монолитов с вынесением в общий микросервис данных пользователей и созданием единого механизма аутентификации и авторизации. Конечной целью этого действа было создание надежной базы для перехода всей разработки в команде на микросервисную архитектуру.

Тогда-то я впервые и применил на практике JWT, результатами чего остался очень доволен. В этой статье я хочу поделиться своим опытом работы с этим стандартом на конкретных примерах и рассказать, почему он удовлетворяет все мои потребности как разработчика в самых разных проектах: новых и долгоживущих, микросервисных и монолитных, в ситуациях, когда нужно быстро накидать MVP, и когда требуется не спеша и вдумчиво заложить основу на долгие годы качественной разработки.

Читать далее

Ежегодный опрос PHP-сообщества: итоги 2024 года

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

2024 стал насыщенным годом для русскоязычного сообщества PHP-разработки. PHP Russia 2024, релизы PHP 8.4, Symfony 7.2 и Laravel 11.

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

Читать далее

Переход на Symfony в заскорузлом Yii2 монолите: подробный разбор

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели6.1K

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

Читать далее

Общение с умными устройствами силами PHP

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

Каждый день мы сталкиваемся с более новыми и умными устройствами, управляемыми через интернет или Wi-Fi. Концепция IoT (Internet of Things) объединяет физические устройства в одну сеть для передачи данных и управления ими. И, оказывается, что интернет вещей — никакое не ограничение! Управлять устройствами в сети можно с помощью легковесного протокола MQTT.

Привет, Хабр! Меня зовут Александр Чередников и я — CTO в компании QTIM, которая занимается заказной разработкой. В этой статье, по мотивам моего доклада на PHP Russia, расскажу, как общаться с умными устройствами силами PHP.

Читать далее

Как я собственный электронный журнал писал

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

Приветствую всех! В данной статье я расскажу про процесс создания собственного школьного электронного журнала...

Читать далее

Секреты стройности монолита: подходы по снятию нагрузки с БД

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

Привет! Меня зовут Олег Кретинин, и я разработчик в команде общих компонентов в Яндекс Еде. Сегодня я расскажу о том, как мы смогли успешно снять нагрузку с нашей базы данных, а также уменьшить её размер.

Помимо сервисов, написанных на C++, Go и Python, у нас есть монолит, он же «кора», на PHP, который всё ещё представляет огромную кодовую базу, хранит кучу логики и предоставляет данные по API для 120 сервисов.

После обновления фреймворка и версии PHP мы принялись за решение другой проблемы, которая всё чаще и чаще давала о себе знать. В тот период у нас возросло количество инцидентов, связанных с базой данных, и нам нужно было что‑то придумать, чтобы стабилизировать проект максимально быстро. Случалось, что всё сыпалось во время праздничных дней, когда количество заказов увеличивалось на 30–40%, или во время разовых массовых операций, например когда однажды в большую сеть ресторанов добавлялся бесплатный соус к каждой позиции меню.

Читать далее

Сервис событий элементов смарт-процесса Bitrix24 на архитектуре DDD

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

Приветствую всех укротителей событий! Проникнувшись идеей разработки с использованием DDD, я решил реализовать на нем обработку событий для элементов смарт-процессов Bitrix24, коей хочу поделиться с вами.

Читать далее

Бизнес-процессы Битрикс: практические советы

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

Привет, Хабр!

Меня зовут Михаил, я ведущий разработчик в НЛМК ИТ. Команда, в которой я состою, занимается разработкой и поддержкой различных информационных систем, одной из которых является Единый корпоративный портал ГК НЛМК на базе Битрикс24.

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

Ранее мы уже начинали рассказывать о том, что для унификации и ускорения разработки отдельных сервисов у нас активно применяется модуль бизнес-процессов Битрикса. 

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

Опираясь на наш опыт работы с этим инструментом, накопленные знания и часто встречающиеся вызовы, хочу поделиться некоторыми советами и нюансами работы с бизнес-процессами. Эта статья — путеводитель по "метро" корпоративных порталов: от автозапуска процессов до оптимизации сложной логики.

Читать далее

Добавляем свои переменные в шаблоны писем Joomla 5+

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

Расширяем стандартный функционал шаблонов писем CMS Joomla. Добавляем к переменным (шорт-кодам) шаблонов писем поля пользователей.

Читать далее

Асинхронный бег или драматическое ускорение с RoadRunner

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

Очень много в последнее время слышно замечаний в адрес PHP – мол, медленный, тяжелый, неповоротливый, все давно микросервисы на Go/Java/(нужное подставить) пишут. В этой статье я постараюсь расписать плюсы, минусы и результаты нашей попытки ускорить проект на PHP с использованием RoadRunner.

Читать далее

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

Сделали свой обучающий курс для разработчиков. Выпускать или нет?

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

Всем добра! Я руковожу агентством web/mobile разработки, поэтому заинтересован, чтобы моя команда росла в скиллах. Тем временем рынок меняется, постоянно выкатываются обновления, а найти действительно сильных специалистов все сложнее.

Читать далее

Типобезопасная работа с массивами PHP, часть 3

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

Всем привет! Расскажу о большом обновлении в пакете sbwerewolf/language-specific.

Для тех, кто не знаком с этим пакетом, коротко опишу его назначение.

Допустим, вы по API получили JSON с большой вложенностью, и вам нужно достать из JSON какое то значение которое зарыто поглубже. Что делать ? конечно преобразовать JSON строку в ассоциативный массив, а дальше что делать ? Конечно прописать все индексы до искомого элемента, получиться что то такое:

formatted = (string)response["response"]["GeoObjectCollection"]["featureMember"]
[0]["GeoObject"]["metaDataProperty"]["GeocoderMetaData"]["Address"]["formatted"]
?? "Адрес не найден";

Получилась строка кода длиной 200 символов. Не очень удобное такое читать. Самое неприятное, что элемента с индексом 0 может и не быть, то есть сначала надо проверить, что он есть, а потом уже идти по массиву дальше, и каждый раз придётся приписывать весь это хвост из индексов, поэтому код будет заграмождён индексами, работать с таким кодом не удобно.

Пакет sbwerewolf/language-specific , позволяет избавить код от сплошного перечисления индексов, замороченных выражений, скобочек и операторов ??.

Читать далее

Триггеры ядра Joomla при CRUD-операциях

Время на прочтение6 мин
Охват и читатели828

CRUD - аббревиатура основных операций с данными: создание (Create), чтение (Read), изменение (Update) и удаление (Delete). Практически все действия на сайте как в админке, так и пользовательской части можно описать этими действиями. Разработчикам при создании функционала часто в какие-то моменты этих действий нужно проделать некие действия с участием данных или без них.

Как найти нужное событие для своего плагина в Joomla подскажет эта статья.

Читать далее

[Записки тимлида] Битрикс: от модулей к сервисам 3

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

Автор: Денис Закусило

Приветствую всех неравнодушных! Это заключительная статья цикла о переходе от модульной архитектуры к сервисам.

[Записки тимлида] Битрикс: от модулей к сервисам

[Записки тимлида] Битрикс: от модулей к сервисам 2

Сегодня мы рассмотрим организацию структуры frontend стороны приложения.

Читать далее

Как организовать структуру приложения

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

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

В этой статье мы разберём, что значит «понятная структура кода», и почему её наличие столь важно для успешной разработки.

Читать далее

Как уведомлять клиентов о снижении цен на избранные товары в 1С-Битрикс

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

Когда клиент откладывает покупку, ожидая скидки, важно не потерять его интерес. Уведомления о снижении цен на избранные товары помогают вовремя сообщать пользователям о выгодных предложениях, возвращая их на сайт и стимулируя продажи. В статье мы расскажем, как настроить такую функцию в 1С-Битрикс.

Читать далее

Реализация паттерна Chain of Responsibility на примере котиков в PHP

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

Привет, Хабр!

Если вы когда‑нибудь пытались настроить бизнес‑логику в своём проекте так, чтобы она не выглядела как свалка if-else и работала хорошо, то этот материал для вас. Сегодня мы разберём один из самых приятных паттернов — Chain of Responsibility, или «Цепочка обязанностей».

Читать далее