Laravel традиционно является MVC-фреймворком, но MVC не слишком хорошо масштабируется для крупных проектов. Обычно, в конечном итоге получается, что логика содержится во всех секциях: моделях, представлениях и контроллерах, и по мере развития приложения его становится почти невозможно тестировать. В книге Тейлора Отвелла упоминается шаблон репозитория, но даже он не способен решить эту проблему масштабируемости. После того, как коллега показал мне статью в блоге о шестиугольном шаблоне проектирования в Rails, я решил попробовать применить его в Laravel —…
Оригинальная статья была опубликована в марте 2013 года — прим. пер.
Laravel — это простой и изящный PHP-фреймворк, который превращает рутинную разработку в творчество.
Расскажи о себе и о своём проекте «Laravel».
Мне 26 лет, я разработчик, в настоящее время живу в своем родном штате Арканзас. Я создал Laravel — фреймворк для веб-приложений, помогающий разработчикам создавать отличные приложения, используя PHP. Сейчас это один из самых популярных открытых (open-source) PHP-проектов на Github, сообщество которого насчитывает тысячи…
Один из основных вопросов в Laravel — как лучше устанавливать пакеты. Традиционно мы имеем неприятную часть файла readme, которая содержит подобную инструкцию:
shphp artisan config:publish rtablada/laravel-faq
Это не очень сложно, но может быть немного запутанным и длинным. Гораздо приятнее было бы иметь команду наподобие:
shphp artisan faq:config
Она короче, слаще и удобнее.
Итак, для начала мы создадим для наших команд пространство имен в консоли…
По мере того, как я начал создавать больее полнофункциональные пакетов Laravel, я понял, что хочу давать пользователям возможность задавать параметры подключения к БД, отличные от тех, которые используются по умолчанию в изначальном окружении Laravel. Один такой случай произошел, когда я начинал создавать свой пакет для FAQ. Итак, давайте посмотрим, как мы можем это сделать.
После разговора с Тэйлором я узнал, что хитрость заключается в методе PHPgetConnection
, который находится в PHPIlluminate\Database\…
Есть три компонента при создания фасада:
- Корень фасада (Facade Root) — базовый класс, методы которого вызывает фасад.
- Класс фасада, который указывает Laravel, к какому зарегистрированному (базовому) классу он относится.
- Сервис-провайдер, который регистрирует базовый класс в контейнере приложения (
PHPApp
).
Сценарий использования
Предположим, у нас есть класс, для которого мы хотим сгенерировать фасад. Например, класс PHPFideloper\Example\UnderlyingClass
.
…
При работе над большими Laravel-проектами всегда возникает вопрос: «Каким образом мне организовать весь этот код?» Многие люди начали предлагать новые пути решения данной проблемы. Довольно часто люди создают пространство имен в своих котроллерах, представлениях, составителях (view composers) и сервисе каталогов. Но для меня — это нечто паутины, состоящей из каталогов, и кричащей: «Я просто подгоняю все под MVC». Обычно я наблюдаю, как люди создают пространство имен с названиями типа API, Admin Panel и для самого сайта (Marketing). Таким образом, структура их приложения приобретает некий вид…
У всех нас рано или поздно наступает момент в жизни, когда мы хотим поделиться кучей уведомлений с пользователем.
На первый взгляд это может вызвать некоторые сложности, но у меня имеется шаблон, который может решить проблему «в лоб».
Я хочу выразить отдельную благодарность Крису Фидао за оказанную мне помощь в корректировке и улучшении этой статьи. Если вас интересует больше информации о прагматичном проектировании Laravel-приложений, советую прочитать его книгу.
…
Модель-вид-контроллер (MVC) — очень распространённый шаблон проектирования современных веб-приложений. Широкое использование и признание шаблона проектирования означает, что многие популярные фреймворки построены на основе этой архитектуры.
Laravel 4 — один из таких фреймворков, который использует шаблон проектирования MVC, чтобы аккуратно разделять между собой различные аспекты веб-приложения.
В этой статье мы рассмотрим, что именно представляет собой модель, каковы три важнейших компонента бизнес-логики, и как настроить свою первую модель в Laravel 4.
…
Применение шаблонов проектирования на практике может вызывать некоторые сложности. Представьте себе ситуацию. Маленький ребенок, интересующийся техникой, играет в игрушечные машинки. Тут подходим мы, и предлагаем ему начать проектирование и строительство автозавода по производству автомобилей (это именно то состояние, в котором я находился, когда меня не очень учтиво ввели в тему шаблонов). Но это не должно быть нашей на них реакцию. Данное руководство о двух шаблонах поможет вам существенно улучшить структуру вашего приложения и шаг за шагом постигать и внедрять новые технологии.
Шаблон репозитория
Хранилище является…
Зачастую у вас появляется желание предоставить вашим пользователям разные способы взаимодействия с вашим пакетом. Обычным решением является создать REST API к вашему пакету для обработки данных.
Изначально, я хотел получить приятный одностраничный интерфейс для Laravel-FAQ. Для этого в рамках подготовки к этому я работал над созданием гибкого REST API, который позволит добавлять реализованный функционал, когда мне это понадобиться…
Поздравляю, вы изобрели сервисный слой. Но до гексагональной архитектуры ещё не близко.
Валидация должна быть в классе Request, за одно это исключило бы ваше применение рефлексии которое тут не очень уместно.