Как стать автором
Поиск
Написать публикацию
Обновить
131.07

PHP *

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

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

Интерпретатор выражений на php, без использования eval

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

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

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

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

В общем, было решено писать интерпретатор выражений. Использование функции eval отмёл сразу, т. к. это такая потенциальная мина в безопасности, которую сам себе закладываешь. Моё субъективное мнение, что минусы от её использования перекрывают плюсы.

Читать далее

Symfony + React: Основные проблемы и методы их решения

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

Symfony и React – мощная связка для создания современных веб-приложений. Symfony, как PHP-фреймворк, обеспечивает надежный серверный бэкенд: работу с базой данных, бизнес-логику, REST API и безопасность. React же отвечает за динамичный интерфейс на стороне клиента, позволяя создавать богатые Single Page Application (SPA) с мгновенной реакцией на действия пользователя. Используя их вместе, разработчики получают гибкость разделения фронтенда и бэкенда, что упрощает поддержку и масштабирование. Например, бэкенд на Symfony можно переиспользовать для мобильного приложения или другого клиента, пока React обеспечивает отличное UX в браузере.

Однако сочетание двух разных технологий несет и ряд вызовов. Нужно грамотно спроектировать API для связи между фронтом и бэком, обеспечить безопасный обмен данными и учесть особенности работы SPA (например, отсутствие перезагрузки страниц, хранение состояний на клиенте и пр.). Возникают вопросы: как организовать взаимодействие React-приложения с Symfony API? Как защитить API и пользовательские данные от угроз, таких как несанкционированный доступ или атаки? В этой статье мы рассмотрим основные проблемы интеграции Symfony + React, связанные с API и безопасностью, а также предложим практические методы их решения. Статья ориентирована на разработчиков от начинающих до среднего уровня и включает примеры кода и наглядные иллюстрации ключевых моментов.

Читать далее

Laravel 12. Что нового?

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

Сегодня релиз Laravel 12, основной фишкой которого заявлены минимальные критические изменения. Большинство проектов могут быть обновлены до новой версии без изменений кода. Разработка Laravel 12 будет вестись до 13 августа 2026 года, а патчи безопасности будут выходить до 24 февраля 2027 года — итого два года поддержки.

что нового

RoadRunner vs OpenSwoole vs FrankenPHP с Laravel Octane

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

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

И мне захотелось всё проверить своими руками...

Читать далее

Как я создавал Observability для своих pet-проектов. Часть 1

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

Это в какой-то степени продолжение моей статьи — История создания идеального Docker для Laravel. В ней я рассказывал о том, как собрал идеальный Docker-образ для Laravel с Nginx Unit. Это был один из первых шагов по оптимизации моей инфраструктуры. Как я уже упоминал, у меня есть несколько pet-проектов, запущенных на VPS в docker-compose, и я хотел не только отслеживать их состояние, но и прокачать навыки в области Observability.

Читать далее

Fusion — php стал ещё ближе к javascript

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

Каждый PHP-разработчик, работая с современными JavaScript-фреймворками, наверняка задумывался о том, как было бы здорово передавать данные напрямую в компоненты без танцев вокруг контроллеров и типов данных. Арон Френсис, видимо, тоже терзал себя этим вопросом, поэтому 4 февраля 2025 года на своём ютуб-канале представил новую веху развития фронтенда на Laravel — Fusion.  В этом статье мы рассмотрим базовые принципы работы библиотеки и основные нюансы работы с ней.

Читать далее

Как мигрировать смарт-процессы в Битрикс и не сгореть

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

Привет, меня зовут Евгений, я разработчик из Байовэр в компании НЛМК ИТ.

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

Приведу пример – требуются лакокрасочные покрытия от стороннего поставщика для работы цеха, но перед заключением контракта на массовые поставки, нужно убедиться, что товар не разбавлен. Ну то есть надлежащего качества:) Заранее прошу прощения за качество юмора, вы привыкнете.

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

Читать далее

CRM для автошколы, часть 2

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

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

Читать далее

CRM для автошколы?

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

Доброго времени. Меня зовут Дмитрий и я веб‑разработчик. На данный момент работаю в группе компаний по экспорту автомобилей и техники из Японии, Китая и Кореи. Но, сейчас поговорим не об основной работе, а о «подработке».

>= 2 лет назад, на меня вышел директор достаточно крупной автошколы нашего города. На тот момент у них имелось порядка 3-х филиалов, и приблизительно 4,5 тыс. учеников (как актуальных, так и те — которые уже получили свои ВУ). Директор предложил мне поработать с их CRM системой. Данное ПО было написано какими‑то фрилансерами, и на протяжении нескольких лет они же и обеспечивали поддержку. Но, со слов директора, они начали забивать на свою работу, затягивали с выполнением задач или во все игнорировали пожелания по внесению изменений (все это было не бесплатно).

Читать далее

MoonShine v3: главные изменения и новые возможности в open-source админ-панели для Laravel

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

MoonShine — это open-source админ-панель для Laravel, и 10 декабря 2024 г. вышел релиз MoonShine v3. В этом материале я расскажу что именно изменилось в самом MoonShine. Мы рассмотрим улучшения в установке и конфигурации, поддержку различных подходов к настройке, улучшения в работе с полями, новые возможности для интеграции с API, а также улучшенную работу с компонентами и меню. Также уделим внимание новым возможностям работы с фронтендом через Alpine.js, а также внедрению новых систем, таких как JSON-ответы и спецификации OpenAPI.

Давайте рассмотрим подробнее!

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

VK, как НЕ НАДО собеседовать middle разработчиков

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

Я являюсь действующим PHP middle разработчиком в одной средней компании. Занимаемся разработкой highload микросервисов в B2B сфере. Клиентами являются крупные интернет‑магазины, в 5 странах, которые на слуху у каждого. Суммарно обрабатываем около 50к запросов в секунду, храним миллиарды записей и отвечаем за качество и жизнеспособность около тысячи интернет‑магазинов.

Имею опыт в техническом собеседовании, в том числе и других middle php разработчиков. За свою карьеру провёл пару десятков таких собеседований, по результатам которых было нанято около 5 разработчиков и 2 аутсорс компании.

Делюсь с опытом собеседования на позицию middle php разработчика во «ВКонтакте».

Читать далее

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

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

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

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

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

Читать далее