Обновить
33.86

PHP *

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

Всем привет! Расскажу о большом обновлении в пакете 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 мин
Количество просмотров421

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

Подключение чата DeepSeek к Алисе

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

В этой статье вы узнаете, как интегрировать GPT в колонку Алисы без зарубежных серверов, используя DeepSeek. Покажем пошаговую настройку PHP-хостинга, объясним, где взять нужные ключи и как настроить навык в Яндекс.Диалогах. Результат — умный помощник, способный отвечать на вопросы с помощью мощи GPT.

Читать далее

[Записки разработчика] Как легко установить расширения PHP с помощью PIE

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.6K

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

PECL , хотя и полезен, кажется устаревшим. Не так просто разместить расширение в PHP, как в Composer. PIE — это инициатива PHP Foundation, призванная решить эту проблему, рассматривая расширения как пакеты Composer. Он упрощает процесс, обеспечивает лучшую кроссплатформенную согласованность и обеспечивает более простые обновления и управление расширениями PHP.

Читать далее

Извлекаем почтовые индексы из ФИАС

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.4K

Казалось бы если ФИАС содержит эти данные, то просто выгрузи их ? Но не тут то было, дело в том что почтовые индексы есть у домов, но почтовых индексов нет у населённых пунктов, при этом населённые пункты через произвольное количество своёв "абстракции" связаны с домами. Эта связь записана в таблицу ADM_HIERARCHY - группировка по административному делению.

Собственно задача состоит в том что бы сгруппировать почтовые индексы всех домов и взять минимальный индекс как индекс собственно населённого пункта (индекс населённого пункта обычно заканчивается нолями, у "подчинённых" почтовых отделений индексы заканчиваются цифрами от 1 до 9).

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

О том как это сделать и решить проблему с выборкой будет эта статья-инструкция.

Читать далее

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

MetaStorm – IDE в IDE. Первое большое обновление

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

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

Обзор на первую версию плагина можно найти здесь.
Изначально плагин покрывал лишь мои нужды с небольшой абстракцией для общего применения, но с того момента много поменялось.

Читать далее

Релиз MoonShine v3. История и нововведения

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

Я, Данил Щуцкий (CutCode), уже более 2-х лет работаю над open-source админ-панелью для Laravel — MoonShine. 10 декабря 2024 г. состоялся релиз MoonShine v3. В этой статье хотел рассказать о проделанной работе и про основные нововведения по проекту.

Читать далее

Дайджест новостей по PHP, Laravel и Symfony за декабрь'2024

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров4.2K

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

Сергей Пантелеев, Кирилл Несмеянов и Данил Щуцкий собрали новости за декабрь в PHP, Symfony и Laravel (соответственно). Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀

Читать далее

Плохие практики в PHP-бэкэнде: примеры и советы

Время на прочтение8 мин
Количество просмотров13K

Так исторически сложилось, что язык программирования PHP порой недолюбливают. Я не встречал еще ни одного Java программиста который бы не смотрел на PHP свысока или хотя бы не ронял фразы типа: «К сожалению, практически вся e‑commerce написана на PHP». Наверное это происходит из‑за того, что мы видим «плохой» код на PHP, иногда вынуждены поддерживать этот код и переносим негатив на сам язык. Но тем не менее, нельзя отрицать, что PHP популярен — по данным на 2024 год, PHP используется на более чем 75% всех веб‑сайтов, где язык программирования известен.

Надеюсь, эта статья может быть полезна не только тем, кто не работает с PHP постоянно, а вынужден лишь иногда что‑то время от времени фиксить, то и тем для кого PHP является «родным» языком. Я собрал некоторые антипаттерны или плохие практики из‑за которых плохой код и появляется. Возможно вы узнаете здесь свои приемы и подходы и пересмотрите их.

Читать далее

Организуемся с помощью fork'ов

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

В одном из моих прошлых проектов нам пришлось решать две (вообще три, но третий случай сильно далеко уходит от центральной темы) очень похожие проблемы. У нас на проекте разрослось количество кронов, и ими стало тяжело управлять. И начало появляться большое количество консьюмеров, и ими то же надо было как то управлять. Мы эти проблемы решили с помощью старых добрых fork'ов. Все примеры будут приведены в php, но принцип работы можно использовать и для других стеков. Ниже будет описан принцип тактика использования fork'ов для наведения порядка в фоновых задачах.

Читать далее

Отправка логов в Telegram. Модуль для Laravel

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.9K

Всем привет! В данной записи я хотел бы поделиться с вами модулем, который я разработал для Laravel.

Это мой первый опыт в разработке публичных модулей для Laravel, поэтому прошу не судить строго!

Данный модуль позволяет легко и быстро настроить отправку логов и сообщений об ошибках в Telegram сообщество, где под каждый тип события вы можете выбрать отдельный топик. Таким образом вы можете отправлять сообщения о кастомных событиях, исключения и системные ошибки.

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

Читать далее

Выжимаем максимум скорости из PHP

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

При запуске PHP-приложений крайне важно правильно выбрать веб-сервер. Чтобы объективно оценить производительность популярных решений, мы проводили тестирование не на искусственных данных, а на реальных примерах. Наша цель не заключалась в создании рейтинга веб-серверов для PHP-приложений. Мы стремились показать, в каких условиях каждый сервер сможет продемонстрировать наилучшие результаты.

Читать далее