Как стать автором
Обновить
54.42

PHP *

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

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

Создание пользовательского типа поля Form в Joomla 5 на примере Modal Select

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

В панели администратора Joomla встречаются поля, которые нужно заполнить данными из других компонентов: указать материал, пункт меню, контакт, товар и т.д. Обычно такие поля оформляются в виде выпадающего списка select option, могут оформляться в виде input type="text" с datalist, но есть и удобные поля, показывающие список искомых сущностей, с фильтрацией, поиском, пагинацией и т.д.

Все мы видели эти поля в действии при выборе материала в пункте меню типа "Материалы - Материал", "Контакты - Контакт", или при создании алиаса (псевдонима) пункта меню - "Системные - Псевдоним".

Как создать точно такое же, но своё (например, для выбора товаров) расскажет эта статья.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

Ручная пила для PHP-монолита

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

Привет! Это третья и заключительная часть истории поиска надёжного способа работы с транзакциями в распределённых системах.

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

Статья может быть полезна разработчикам и архитекторам, которые задумываются о вынесении части бизнес-логики из монолита, написанного на PHP.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

MoonShine 2.0. Что нового?

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

Последние полгода наше комьюнити CutCode работает над новой версией нашей open-source админ-панели MoonShine. И вот недавно состоялся релиз MoonShine 2. Давайте пройдемся по всем значимым изменениям! Конечно, в одной статье я не смогу осветить все нововведения, но попробую сделать это по-максимуму. Ну а также расскажу о ближайших планах на MoonShine 3.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии14

Истории

Магия транзакций в Bitrix: Как заставить ваши данные держаться как вкопанные

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

Сегодня мы поговорим о том, как использовать транзакции в Bitrix, чтобы обеспечить целостность данных.

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

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии9

Типичный Swagger без гмо

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

Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php? (Спойлер: онжом)

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии9

Реализация SOLID на примере

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

Рассмотрим на простом и наглядном примере реализацию SOLID на Symfony. Будет так же ссылка на Github. Допустим, нужно реализовать импорт товаров из внешнего сервиса...

Читать далее
Всего голосов 19: ↑1 и ↓18-17
Комментарии24

Мой путь из фрилансеров в наёмные программисты

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

Рассказ пойдет о моем первом опыте трудоустройства в IT-компанию после нескольких лет фриланса: что лично я открыл для себя, с чем столкнулся, чему научился. Мой стек - LAMP, разрабатываю преимущественно на Wordpress, также Symfony и Laravel.

Читать далее
Всего голосов 20: ↑19 и ↓1+18
Комментарии13

Альтернатива Nova: почему решили перейти с самописного решения на Orchid

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

Привет. Меня зовут Артем, я backend-разработчик в Пиробайте. Когда я только пришел в компанию, то узнал, что команда разрабатывает административные панели на основе самописного решения, созданного внутри студии. Когда-то за основу был взят шаблон Inspinia, и для него написана переиспользуемая логика на PHP, чтобы оперативно решать задачи.

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

Поэтому я решил привнести немного комфорта и практичности, внедрив новую панель администратора в работу студии. Расскажу, почему Orchid — хорошая альтернатива двум другим решениям.

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии24

Пример применения генератора в Битрикс: как не ронять сервер на больших выгрузках

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

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

А потом попробуем разобраться, что с этим делать.

Посмотреть, вдруг пригодится
Всего голосов 10: ↑10 и ↓0+10
Комментарии31

Symfony под капотом: Symfony Messenger и механизм повторной обработки сообщений при ошибках

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

Привет! Меня зовут Ваня, последние несколько лет я занимаюсь backend-разработкой в Сравни. Моя команда разрабатывает интеграции с сервисами наших партнёров, код пишем на PHP и Symfony Framework.

При работе с интеграциями мы часто имеем дело со сбоями в сторонних сервисах, и нам очень важна возможность восстановления после таких ошибок. Для решения этой задачи у Symfony есть прекрасный инструмент – нужно только правильно им воспользоваться!

В этой статье я расскажу о том, как в Messenger-компоненте Symfony устроен механизм повторной обработки сообщений при ошибках (или по-простому – механизм ретраев), а также поделюсь опытом его использования и некоторыми важными нюансами его работы.

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии0

Безотказные очереди в RabbitMQ: Гарантированная доставка сообщений

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

RabbitMQ - это открытая реализация протокола AMQP (Advanced Message Queuing Protocol), является мощным и гибким брокером сообщений. Он обеспечивает надежное и эффективное взаимодействие между компонентами системы, предоставляя разработчикам инструменты для создания гибких и масштабируемых архитектур.

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

В этой статье мы сосредоточимся на безотказных очередях в RabbitMQ, исследуя их применение в конкретных сценариях разработки, не углубляясь в общие механизмы работы брокера сообщений.

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии7

PHP и Laravel дайджест новостей за октябрь 2023 года

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

Всем привет! Краткий обзор новостей из мира PHP и Laravel за октябрь 2023 года  от Сергея Пантелеева и Данила Щуцкого.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

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

Группировка вызовов функций через обещания

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

Прошлая статья по данной теме была чисто теоретическая. Теперь есть готовый пакет. И данная статья - инструкция к нему.

Базовый функционал
Самое очевидное применение группировки вызовов - решение проблемы N+1 запросов. Данная проблема возникает когда фреймворк доступа к данным выполняет N дополнительных SQL-запросов для получения тех же данных, которые можно получить при выполнении одного запроса.
К примеру для получения данных имеются вызовы следующих функций, каждая из которых выполняет один SQL-запрос. При применении пакета 6 вызовов функций группируются в две группы по типу функции вызова. И в каждую группу попадают все аргументы вызова.

Читать далее
Всего голосов 4: ↑2 и ↓20
Комментарии17

Из чего состоят карьерные сайты: топ-5 фич и 4 месяца разработки

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

Всем привет! Меня зовут Данила Соловьев, я заместитель руководителя направления PHP в AGIMA. Недавно мы разработали собственное коробочное решение — это универсальный бэкенд для карьерных сайтов на Laravel. Мы можем разработать такой за четыре месяца. В этой статье объясняю, что побудило нас сделать такую коробку, из чего она состоит и кому может пригодиться.

Читать далее
Всего голосов 15: ↑10 и ↓5+5
Комментарии6

Sucker (присоска) — PHP компонент для теста приватных методов и свойств

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

В рамках хобби пишу свои собственные компоненты.
Но есть проблема - отсутствие аудитории.
Чтобы полноценно тестировать компоненты на работоспособность, решил через Хабр дать популярность некоторым своим компонентам.

На днях дописал компонент который универсально может взаимодействовать с приватными свойствами и методами классов и объектов. Цель такого доступа - тестировать работоспособность скрытого когда.
alpa/tools_sucker - https://packagist.org/packages/alpa/tools_sucker
https://github.com/alexeyp0708/php_tools_sucker

Возможно вы зададитесь вопросом - тема стара как мир, зачем еще один схожий компонент?

Читать далее
Всего голосов 9: ↑6 и ↓3+3
Комментарии25

А был ли баг? Может бага и не было? Зачем, как и чем тестировать PHP код

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

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

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии0

Что такое гексагональная архитектура. Разделение бизнес-логики и инфраструктуры с помощью портов и адаптеров

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

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

Вот как сам Кокберн описывает эту архитектуру одним тезисом:

Добиться, чтобы приложение в равной степени могло управляться пользователями, программами, автоматизированными тестовыми или пакетными сценариями, а также разрабатываться и тестироваться в изоляции от устройств и баз данных, на которых оно впоследствии будет выполняться. — Алистер Кокберн, 2005 г.

В этой статье мы рассмотрим некоторые задачи, как правило, решаемые в типичных программных проектах. Затем мы поговорим о гексагональной архитектуре и о том, как она призвана решить эти задачи. Мы также рассмотрим некоторые детали реализации такой архитектуры и варианты тестирования.
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии45

Сортировка в Laravel по полям relation-ов

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

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

После завершения задачи решил создать этот более-менее "всеохватывающий" гайд.

Читать далее
Всего голосов 1: ↑0 и ↓1-1
Комментарии5

Какой длины должны быть классы — когда «чистый» код на самом деле не так уж и хорош

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

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

Наши коллеги из beeline cloud подкинули интересную статью для перевода про разработку на PHP, плохие практики и не только. Это история о том, как правила чистого кода могут подорвать его фактическое качество. Материал содержит много рассуждений на эту тему и будет полезен всем, кто только начинает свой путь в разработке. Приятного чтения!

Иду читать
Всего голосов 21: ↑18 и ↓3+15
Комментарии27