Обновить
64K+

PHP *

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

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

Observable, random_bytes() и outbox. Материалы с Пыхап #4

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

Свежие доклады о PHP, игра «Было/не было», факап-разгоны и розыгрыш слонов — так прошел четвертый Пыхап, который мы с каналом Пых организовали в офисе Lamoda 19 июня. Делимся материалами со встречи.

Чтобы не пропустить новые митапы от Пых, следите за анонсами и трансляциями в Telegram-канале, на YouTube и VK. А 19 сентября приглашаем на Пых.конф’25 — новую PHP-конференцию для всех.

Читать далее

Open Source: Галерея готовых решений + Telegram-бот для брифов

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

В рамках инициативы поддержки и популяризации open-source в России, я выложил в открытый доступ минимально жизнеспособную версию (MVP) своей галереи готовых решений, которая призвана упростить запуск проектов для малого бизнеса, разработчиков и энтузиастов.

Если объяснить просто — это некий аналог WordPress, но не для сайтов, а для готовых решений и данных, которые можно устанавливать и разворачивать буквально за пару минут.

Первое опубликованное решение — Telegram-бот для автоматического сбора брифов от клиентов.

Читать далее

Тестирование производительности c PHPBench: что и как?

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

PHPBench - это, кажется, крайне не популярный фреймворк для тестирования производительности кода на PHP. По крайней мере за 18 лет он мне ни разу нигде не встретился, а услышал об нём примерно года назад. Фреймворк PHPUnit-подобный, где бенчмарки, как и тесты из PHPUnit объединяются в классы, группы и т.д. и т.п. Чтобы много не болтать, давайте напишем чуть кода и отбенчмаркаем его.

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

Читать далее

Собираем трейс в Laravel и отправляем в Zipkin

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

Привет, Хабр! Меня зовут Александр Белышев. Хочу немного вам рассказать о библиотеке (Laravel Zipkin Tracer), которую разработал изучая трейсинг в php. Рассмотрим что собирает, как собирает и сравним ее с OpenTelemetry.

Читать далее

Загадочный параметр $live_site в configuration.php Joomla. Зачем он нужен?

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

Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.

Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.

Однако, параметр всё же остался в ядре Joomla. Зачем он нужен?

Читать далее

Из боли в удобство: обёртка для расписания пар в колледже (сайт, ВК-бот и SMS)

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

Или как я доставлял расписание студентам в новом формате решая несколько проблем, используя парсинг и PHP 7 в 2017-2021 годах.

Читать далее

Анемичные модели с логикой в сервисах: плюсы и минусы одного из самых популярных подходов к разработке на PHP

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

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

Читать далее

strlen() vs mb_strlen(): Почему 71% PHP-разработчиков ошибаются

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

 В этой статье разберем, как PHP работает со строками и почему даже простой вызов strlen() может привести к неожиданным результатам. На примере крайне простой задачи "что выведет echo strlen('привет!');" посмотрим, что и как влияет на подсчет длины строки, заглянем внутрь реализации strlen() и развенчаем миф о строках как массивах.

Задача в телеге

В одной группе телеграмма с задачами по PHP недавно встретил простой вопрос: что выведет код «echo strlen(‘привет!’);»?
Был вопрос и 4 варианта ответа.

Вроде бы все просто. Но правильно ответили лишь 16%. Наиболее популярным ответом оказался «7», что неверно. Но именно его дали 71% ответивших.

Читать далее

Claude 3.5 Sonnet в роли AI-агента: тестирую работу в цикле с реальным выполнением кода

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

Вчера тестировал мой агент DepthNet на реальных моделях. Это что то вроде "операционной системы для LLM моделей" В прошлой статье пользователи просили привести диалоги, и рассказать подробнее, и тогда я решил более полно осветить вопрос.

Читать далее

No exceptions культ — Rift Miniframework

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

В мире php-ходящих есть мнение, что первое, что сказал Иисус Христос придя в этот мир: "исключения - зло".

Конструкция по типу try { .. } catch (Exception $e) { ..$e->getMessage() } знакома каждому 5 человеку в мире и воспринимается как неотъемлемая часть любой логики на php.

И что в этом такого?

Ничего, кроме того, что из чёткой цепочки обработки запросов ваш код быстро превращается в коллекцию try catch на каждой 3 строке. Это не кажется проблемой до того момента, как дело не дойдёт до разделения приложения на отдельные слои во благо SOLID. Представьте, что в вашей команде >1 человека и все они работают над разными слоями, которые должны между собой взаимодействовать. В подобных ситуациях все участники должны документировать все созданные методы, а так же возвращаемые исключения. И да, это хорошо, но зачастую документация исключений становится невыносимой. Таким образом ваша работа обрастает ненужным слоем прокидывания исключений, которые к слову нужно ещё и создать.

Читать далее

Мосты цифрового мира: клиент-сервер, сервер-сервер

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

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

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

Читать далее

Я создал AI-агента, который думает 24/7 и выполняет реальный код. Вот что из этого вышло

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

Создал экспериментальную систему DepthNet, где AI-агент мыслит циклично, то есть непрерывно, может выполнять PHP-код, управлять своей памятью и живет автономной цифровой жизнью. Протестировал на Claude 3.5 Sonnet — результаты понравились.

Читать далее

«Никогда такого не было, и вот опять»: разбираем атаку c эксплуатацией уязвимости в подключаемом модуле Bitrix

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

Привет, Хабр! Меня зовут Никита Полосухин, я старший системный аналитик центра мониторинга и реагирования на кибератаки RED Security SOC. В этом материале я хочу снова поднять тему важности своевременных обновлений и актуализации версий CMS и их компонентов. В мире ИБ про это знают почти все, но вот коллегам из администрирования и бизнеса, я думаю, может быть полезно увидеть, почему хотя бы раз в год надо уделять время проверке и устранению уязвимостей.

В СМИ периодически появляется информация об массовых атаках на сайты на базе Bitrix с использованием уязвимостей в сторонних модулях — например, недавно компания предупреждала об уязвимости в подключаемых модулях от eSolutions и «Маяк».

Мы в центре мониторинга и реагирования на киберугрозы RED Security SOC тоже регулярно видим такие атаки. В этой статье покажем, как они выглядят in the wild, как их выявлять и блокировать их развитие.

Читать далее

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

Из легаси монолита в модульную архитектуру: проводим рефакторинг и наводим порядок в проекте

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

Привет, Хабр! Меня зовут Владимир Раду, я Backend-разработчик в Рунити. Однажды мы с командой встали перед дилеммой: как навести порядок внутри монолита. Админка одного из сайтов нашей группы компаний — большой и довольно возрастной проект. Он охватывает множество задач и сценариев: от управления ценами до редактирования контента. Со временем стало очевидно, что нужно снижать связанность компонентов и разводить бизнес-части. Так появилась идея перейти к модульной архитектуре.

Внутри о том, что у нас получилось из рефакторинга легаси, как мы выстраивали работу с модулями и объединяли в логичную структуру разрозненные части системы. Будет полезно разработчикам, которые работают с легаси и хотят встать на путь оптимизации проекта — без переписывания с нуля.

Читать далее

Value object и DTO в PHP (DDD)

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

В чем разница и когда что использовать? Это был один из вопросов, на которые я пытался получить ответ.

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

Лучше всего это два подхода понимаются в слоистой архитектуре(слой презентации, доменный, инфраструктура, приложение - те, которые на текущий момент я использую в итоговом примере).

Читать далее

Open Source CRM + Telegram-бот: запись, напоминания, интеграция

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

В рамках проекта по продвижению open-source в России я выложил в открытый доступ Telegram-бота с CRM на PHP + MySQL, который выполняет всю базовую бизнес-логику: он записывает клиентов на услуги, напоминает о визите, собирает телефоны, отслеживает источник заявки, уведомляет администратора, хранит контакты в CRM и делает рассылки. Работает автономно — прямо на Windows, без облаков и внешних сервисов. Подходит предпринимателям, ботмейкерам и самозанятым, кому нужно быстрое, понятное и полностью локализованное решение. Лицензия — MIT. Установил — и автоматизируй бизнес.

Читать далее

Простая интеграция в CMS Bitrix из XML-файла на FTP-сервере с использованием агентов

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

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

Я — Алексей Яриков, ведущий разработчик команды внешних сайтов НЛМК. Мы ежедневно работаем с веб-платформами компании, отвечая за их надёжность, производительность и свежесть данных. В этой статье расскажу, как мы решили задачу регулярной загрузки и обработки большого объёма данных с FTP в рамках Bitrix — наглядно, с кодом, архитектурой и ошибками, которые мы учли.

Читать далее

Пакет PHP Views — простая шаблонизация проекта с Blade и моделями

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

Большинство PHP фреймворков имеет свои решения для шаблонов, но существует огромное количество PHP проектов, включая CMS вроде WordPress, где коробочные решения отсутствуют.

Обычные PHP шаблоны довольно многословны и подвержены ошибкам. PHP Views призван сделать работу с шаблонами в чистом PHP более простой, гибкой и надежной.

Читать далее

Создание подписи XML документа с использованием Smev-трансформации с помощью php-расширения Crypto Pro

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

В один прекрасный день где‑то кто‑то поменял законодательство и нашей курьерской компании стало нужно передавать данные о доставленных ювелирных изделиях в систему ГИИС ДМДК (это государственная система контроля за оборотом драгоценных металлов и камней). Доступ к ГИИС ДМДК предоставляется в виде SOAP сервиса, куда необходимо передавать подписанные запросы, т. е. подписанные XML‑документы. Одним из требований к интеграции было использование КриптоПро для построения защищенного канала передачи данных. Поскольку КриптоПро уже присутствовал в проекте, это сделало очевидным выбор данного продукта и для подписи передаваемых документов.

В этой статье я расскажу о том, как мы реализовали подпись XML‑документов для передачи в ГИИС ДМДК с помощью расширения КриптоПро phpсades, какие подводные камни встретились по пути и как их удалось обойти.

Читать далее

Кастомный сервер конвертации файлов для Битрикс24

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

Пару слов обо мне

Меня зовут Дмитрий, я являюсь PHP разработчиком. Работаю с Битрикс24, Laravel и Go.

Проблема Битрикса

Как известно, рекомендуемое окружение для Битрикса – их собственная разработка BitrixVM на базе CentOS. Иногда такое окружение не устраивает заказчиков, поэтому выбирают Docker или сервер с установленным LEMP стеком. 

При переходе на окружение отличное от BitrixVM, существует две основные проблемы – отсутствие сервера очередей Push&Pull и сервера конвертации файлов. 

Читать далее