Lumen — это совершенно новый микро-фреймворк PHP, разработанный автором фреймворка Laravel Тейлором Отвеллом. Не волнуйтесь, Люмен не предназначен для замены Ларавела. Фактически, идея Lumen заключается в том, что он дополняет ваши существующие или будущие приложения Laravel.
Тейлор Отвелл разработал Lumen с очень конкретными целями, а именно с микросервисами и API. Короче говоря, микросервис — это меньший, разъединенный процесс, который взаимодействует с более крупным приложением, например, нашим приложением Laravel.
В этой статье я хочу рассказать о том, что отличается в Lumen, когда мы должны использовать Lumen и как мы можем использовать Lumen. Я также объясню, как мы можем взять наше приложение Lumen и легко перенести его в полнофункциональное приложение Laravel. Там не будет много кода, так как Lumen во многом похож на Laravel. Давайте начнем.
Так что нового?
Скорее всего, это будет первый вопрос, который многие из вас будут задавать. На самом деле, не так уж много всего «нового» с Люменом, кроме клея. Lumen по-прежнему использует большинство компонентов Illuminate, составляющих основу Laravel (отсутствует только пара). Думайте об этом как об уменьшенной установке Laravel.
Его цель состоит в том, чтобы максимизировать производительность, и чтобы добиться такого увеличения производительности, несколько вещей были изменены. Наиболее важными из них являются следующие:
-
Меньше конфигурации. Большая часть Lumen поставляется предварительно настроенной. На самом деле, вы обнаружите, что в установке Lumen нет директории
config
. Вместо этого вы будете использовать файлы.env
для настройки большей части вашего приложения. - Отличный роутер. Это, вероятно, самая большая разница и причина, почему это может быть так быстро, как это. Lumen не использует маршрутизатор Symfony, как его старший брат Laravel. Вместо этого Lumen использует FastRoute , легкую реализацию маршрутизации, разработанную Никитой Поповым.
Здесь есть несколько компромиссов. FastRoute — очень быстрая реализация, но она не так функциональна, как маршрутизатор Symfony. Если вы хотите использовать субдоменную маршрутизацию, вам нужно будет установить Laravel, который использует маршрутизатор Symfony.
Другой компромисс, на который стоит обратить внимание, заключается в том, что для более точного управления конфигурацией определенных компонентов вам необходимо изменить файлы конфигурации в каталоге vendor/laravel/lumen-framework
. Большая часть конфигурации может быть выполнена с помощью файлов .env
, но некоторые менее сконфигурированные вещи не могут быть настроены напрямую.
Должен ли я перейти на люмен прямо сейчас?
Ответ здесь будет зависеть, но, вероятно, нет. Если вы разрабатываете или разработали приложение на Laravel (4 или 5), то вам, вероятно, не нужно будет переключаться на Lumen прямо в эту самую минуту. Хотя Lumen способен разрабатывать полноценное веб-приложение, оно лучше подходит для небольших разрозненных сервисов и API.
Так, когда я могу использовать это?
Я не могу сказать вам, когда вы можете и не можете использовать фреймворк, который вам доступен. Однако я дам несколько рекомендаций о том, когда вы можете рассмотреть возможность использования Lumen для части вашего следующего проекта.
Допустим, вы создаете большое приложение для интернет-магазина. Итак, вы можете установить Laravel и приступить к работе над монолитным приложением . Теперь нет ничего плохого в этом подходе, и вы можете обнаружить, что он работает хорошо для вас. Если так, продолжайте. Если вы обнаружите, что вас переполняет сложность, или кажется, что вещи немного выходят из-под контроля, то вы можете разделить их на несколько более мелких, более управляемых частей.
Вы будете использовать Lumen для создания отдельных приложений для каждого отдельного сервиса. Для нашего магазина мы можем разделить счета, уведомления по электронной почте, доставку и отслеживание на отдельные приложения. Каждое из этих приложений будет автономной установкой Lumen, и каждое приложение будет выполнять только определенную задачу.
Чтобы наше основное приложение могло взаимодействовать с нашими отделенными службами, мы использовали очереди и такой сервис, как Amazon SQS. Мы можем использовать очереди, чтобы легко ставить в очередь задания, и каждая служба будет прослушивать свои конкретные задания и обрабатывать их по мере их постановки в очередь. Преимущество этого подхода заключается в том, что каждая служба может масштабироваться и развертываться независимо друг от друга.
Вы также можете использовать Lumen для создания API, который также может использоваться вашим основным приложением с помощью HTTP-клиента, такого как Guzzle. Такое разделение позволяет вам масштабировать и оптимизировать бизнес-сторону вашего приложения, не мешая остальным.
Хорошо, как я могу это использовать?
К настоящему времени у вас должна быть хорошая идея относительно того, является ли использование Lumen правильным шагом для вас. Установка Lumen так же проста, как установка Laravel: простая команда composer create-project
, или вы можете установить команду lumen
для создания новых проектов. Мы просто используем Composer, чтобы получить новую установку.
1
|
composer create-project laravel/lumen LumenProject —prefer-dist
|
Композитор разрушит все зависимости. Вы можете использовать Artisan, чтобы быстро настроить приложение для просмотра, или вы можете настроить виртуальный хост или сайт Homestead. В любом случае, как только вы дойдете до пути к вашей установке Lumen, вы увидите блестящую заставку, информирующую вас о том, что Lumen хорош.
Все настройки выполняются в файлах .env
, поэтому вам нужно либо переименовать файл .env.example
либо скопировать его содержимое в новый файл.
Оставшаяся часть начальной загрузки, о которой вы захотите знать, находится в файле bootstrap/app.php
. Если вы используете конфигурацию .env
упомянутую выше, вам нужно раскомментировать Dotenv::load(__DIR__.'/../');
, Прокручивая этот файл, вы увидите несколько закомментированных строк, которые, возможно, захотите раскомментировать. Есть загрузка фасадов, Eloquent, некоторые промежуточные программы и регистрация других поставщиков услуг.
Теперь у вас есть свежеустановленная и настроенная копия Lumen, готовая создать что-то удивительное.
Но подождите, мне нужен Laravel сейчас!
Возможно, вы создаете свое приложение Lumen, и все идет совершенно нормально, пока в один роковой день вы не поймете, что вам нужно то, что предлагает только полнофункциональный фреймворк Laravel. Не переживайте, потому что это чрезвычайно безболезненное обновление. Вот шаги, чтобы следовать:
- Установите свежую копию Laravel 5.
- Скопируйте через каталог вашего
app
. Помните, что вам могут понадобиться некоторые вещи из каталогаapp
L5, например, провайдеры. - Скопируйте всю конфигурацию в соответствующий файл в каталоге
config
. - Скопируйте через любой пользовательский загрузчик.
- Исправьте некоторые маршруты. Поскольку Lumen использует FastRoute, вам, вероятно, потребуется настроить некоторые из ваших маршрутов, чтобы они были совместимы с маршрутизатором Symfony.
Это должно быть большая часть того, что вам нужно скопировать, чтобы перенести ваше приложение Lumen в Laravel. Конечно, это работает в обоих направлениях, поэтому вы можете легко перенести приложение Laravel в Lumen, если поймете, что вам не нужно все, что предлагает интегрированная среда полного стека.
Вывод
Чтобы подвести итог, я просто хочу отметить, что я выступаю за использование Lumen в первую очередь для отделенных сервисов и API, что является его предполагаемым использованием. Это не значит, что вы не можете создать целое приложение на Lumen, потому что вы можете. Если вы решите это сделать, это нормально. В каменном планшете нет никаких правил, указывающих, что вы можете и не можете использовать в своих проектах. В конце дня решение остается за вами. Взвесьте ваши варианты, спланируйте свой проект, решите, что вам нужно, проконсультируйтесь с вашей командой, а затем примите окончательное решение.