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

Laravel *

Бесплатный веб-фреймворк с открытым кодом

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

Тонкий контроллер (php)

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

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

Стек: php, laravel, controller, немного следующего: SOLID, чистая архитектура, DDD, Hexagonal(Onion), CQRS.
Испытуемый: CRUD(создание, чтение, обновление и удаление сущности) записей(post). В основном для примера буду использовать метод обновления записи(update).

Описан Route вот так мы будем попадать в наш метод контроллера update во всех дальнейших примерах. PUT http://0.0.0.0/posts/123

Читать далее

Новости

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

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

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

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

Читать далее

Linux для начинающих: WSL — это читерство. Как Microsoft дал нам Linux без головной боли

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

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

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

Во-вторых, для разных проектов нужно разное окружение. WSL позволяет легко изолировать среды разработки, настраивая их под конкретные задачи или группы проектов. Это гораздо удобнее, чем держать несколько физических машин или постоянно переустанавливать систему.

Наконец, есть и субъективный фактор — привычка. Я с самого начала работал с Windows, и, несмотря на все преимущества Linux, полностью перестроить рабочий процесс оказалось сложно. WSL в этом плане — идеальный компромисс: Linux-окружение под рукой, но без необходимости отказываться от удобств Windows.

Читать далее

The Clean Structure — Универсальная структура PHP-проекта на примере Laravel

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

К написанию этой статьи меня подтолкнуло изучение архитектурных подходов для Vue.js-проектов, а вдохновила - детально описанная методология Feature-Sliced Design.

К сожалению, PHP-сообществу не хватает подобных развернутых рекомендаций, да и вообще, каких-то общепризнанных стандартных подходов в структуре проекта.

Моя статья - это попытка обобщить изученную мною за много лет информацию и сформировать универсальную структуру проекта, основанную на принципах Clean Architecture и модульного монолита.

Читать далее

Новый релиз бота технической поддержки: интеграция с ВКонтакте и docker-compose сборка с мониторингом

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

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

Месяц назад я выложил в открытый доступ проект бота для технической поддержки. За это время он собрал более 100 клонирований и 40+ звёзд на GitHub. В Issues начали появляться предложения по доработкам — большое спасибо всем, кто откликнулся. Это дало мощную мотивацию развивать проект дальше.

GitHub - https://github.com/prog-time/tg-support-bot

В этом посте — кратко о ключевых изменениях последнего релиза.

Читать далее

Mock-объект в рабочем коде, или как тестовый двойник помог решить проблему излишне связанного кода

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

На работе была поставлена задача: в главное веб-приложение нашей фирмы добавить метод формирования бланка в формате PDF «как вот в том микросервисе».

Форма бланка регулярно изменяется, и копировать её в веб-приложение означало нарушить принцип DRY («Не повторяйся») и обречь себя на постоянную двойную работу. Поэтому я решил оставить генерацию бланка в «том микросервисе».

«Тот микросервис» написан на PHP с использованием фреймворка Laravel, содержит большое число доменных объектов, экземпляры которых хранятся в БД MySQL, и имеет развитую систему API для обращения к своему функционалу.

И можно было добавить в него ещё одну точку доступа API, которая бы получала данные и на их основе формировала и возвращала бланк.

Проблема возникла из-за «неприлично» высокой связанности объектов в «том микросервисе». Так, в шаблоне, на основе которого строился бланк, использовались не просто примитивные типы данных, а объект-форма. И шаблон обращался к методам-геттерам этого объекта. А объект, в свою очередь, использовал другой доменный объект в своём конструкторе для заполнения полей.

Читать далее

Аутентификация на основе cookies с помощью Laravel Sanctum

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

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

Представляю вашему вниманию подробное пошаговое руководство по настройке аутентификации на основе cookies с помощью Laravel Sanctum. В процессе мы объясним логику каждого шага и покажем, как настроить Postman. Кроме того, мы рассмотрим наиболее распространенные проблемы, связанные с CORS.

Читать далее

Шаблон на Laravel + FrankenPHP

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

Всех привествую, меня зовут Денис, я PHP Backend разрботчик

Я выступаю на хакатонах за команду https://жыбийрыр.рф/ и у нас была проблема что не было шаблона с которым мы могли спокойно приходить на хакатоны и не писать один и тот же код из раза в раз

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

Читать далее

Telegram-бот на Laravel для клиентской поддержки через темы в группах

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

Привет, Habr!

Хочу поделиться решением, которое упростило мне организацию поддержки пользователей через Telegram. Я написал Telegram-бота на Laravel, который работает как прослойка между клиентами и менеджерами, обеспечивая структурированную переписку внутри одной группы с использованием тем (топиков).

Репозиторий проекта (open source):
👉 https://github.com/prog-time/tg-support-bot

Читать далее

Архитектура в Laravel. Как сделать код понятным и масштабируемым

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

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

Читать далее

Используем несколько баз данных в Laravel

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

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

В этой статье мы разберём:

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

Пошаговую настройку подключений к разным базам в Laravel

Реализацию моделей и отношений между ними

Плюсы и минусы такого подхода

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

Читать далее

Ускоряем каталог интернет-магазина с помощью Elasticsearch

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

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

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

Требования, которые команда сформулировала к новому каталогу:

Читать далее

Пишем тесты для php backend приложений

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

Статья нацелена в первую очередь на PHP backend-разработчиков уровня junior/middle, чтобы познакомить с теорией, которую спрашивают на собеседованиях, и с практическими примерами/советами, полезными для разработки.

Здесь хочу рассказать зачем вообще тестировать код, какие инструменты использовать, какие есть паттерны и тп.

Читать далее

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

Автоматизируем создание FormRequest в Laravel с помощью пакета desole/laravel-generate-request

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

Привет, Хабр! Сегодня я хочу рассказать о новом пакете для Laravel, который может значительно упростить вашу жизнь, если вы часто работаете с FormRequest классами. Пакет называется desole/laravel-generate-request, и он позволяет автоматически генерировать FormRequest классы на основе ваших моделей. Давайте разберем, как это работает и почему это может быть полезно.

Читать далее

Ошибка тестирования с Laravel Prompts в Laravel-Zero

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

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

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

Читать далее

Пошаговое руководство для начинающих по разработке SPA на Laravel и Vue.js

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

Привет, Хабр. На связи Артем, Laravel-разработчик, и я написал инструкцию для начинающих разработчиков по созданию полноценного локального приложения с бэкендом на Laravel и фронтендом на Vue.js. 

Одностраничные приложения стали стандартом для создания динамичных и быстрых пользовательских интерфейсов. Одним из популярных стеков для разработки SPA является сочетание Laravel и Vue.js.

Пошагово разберу, как настроить среду разработки, создать API на Laravel, реализовать динамический интерфейс с использованием Vue.js и связать эти две части в единое приложение. 

После прочтения статьи вы сможете развернуть свое собственное SPA и использовать его как основу для реализации своих идей по функционалу. Этот пример станет отличной отправной точкой для создания более сложных проектов.

Читать далее

Подключение и Настройка ElasticSearch в Laravel

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

Elasticsearch - это мощный поисковый движок, который позволяет эффективно индексировать и искать данные. В этой статье мы рассмотрим, как интегрировать Elasticsearch в Laravel, используя Docker и PHP-библиотеку elasticsearch/elasticsearch.

Читать далее

Laravel + тестирование: как сэкономить время на валидации запросов

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

При разработке API тестирование валидации входящих данных — рутинная задача. Чтобы упростить этот процесс, я создал пакет laravel-request-testdata, который автоматически генерирует тестовые данные на основе правил валидации Laravel Request.

Читать далее

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

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

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

что нового

RoadRunner vs OpenSwoole vs FrankenPHP с Laravel Octane

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

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

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

Читать далее
1
23 ...