Lumen — новый PHP-микрофреймворк от разработчика Laravel



Всем привет!

Буквально несколько дней назад Taylor Otwell, разработчик широко известного и, наверное, наиболее популярного в западном мире фреймворка Laravel, написал в своем твиттере, что помимо Laravel он готовит к выпуску кое-что еще, чем, конечно же, заинтриговал подписчиков.


Долго ждать не пришлось. Уже через неделю был представлен Lumen, микрофреймворк на основе компонентов Laravel. Почему он так называется — «Lumen»? Потому что компоненты Laravel, как известно, носят название Illuminate.

Что же собой представляет этот фреймворк? Давайте посмотрим.

composer create-project laravel/lumen --prefer-dist

Размер чистого фреймворка на диске — что-то около 10 МБ. Не такой уж он и маленький! Тем не менее, это не мешает ему называться «микро», поскольку «микро» — это не только размер.

Внутри — компоненты Laravel 5. Модели Eloquent, авторизация Auth, шаблоны Blade, а также валидация, кэш, middleware, DIC и прочее.

Роутинг основан на библиотеке FastRoute, что позволяет ему быть довольно шустрым.
Тэйлор заявляет скорость бо́льшую, чем у микрофреймворка Slim, и уж еще бо́льшую, чем у Silex.



Третья версия Slim, которая еще не вышла, но уже потихоньку готовится, также пишется на роутере FastRoute.

Синтаксис Lumen классичен для микрофреймворков на PHP:

$app->get('user/{id}', function($id) {
    return User::findOrFail($id);
});

Также поддерживаются контроллеры-классы:

$app->get('user/{id}', 'UserController@showProfile');

Больше кода в разделе документации к Lumen.

Заключение


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

Похожие публикации

Комментарии 49

    +14
    Имеет ли смысл написать статью, о создании маленькой формы регистрации, авторизации на данном микрофреймворке? Для наглядности.
      –5
      У проекта хорошая документация. Думаю, это будет лишним.
        +3
        Я бы все равно с удовольствием почитал, примеры лишними не бывают.
          0
          В каждом разделе есть примеры, этого мало?
          +1
          документация идет по разделам, а увидеть все вместе, в работе, было бы полезно
            –2
            «было бы полезно» почитать про узкие места данного фреймворка, а не про «увидеть все вместе».

            Как же вы читаете документацию, если не можете связать разделы воедино?
              +1
              Покажите мне программиста или сисадмина, который читает всю документацию от корки до корки прежде чем нажать кнопку. Я читаю документацию по мере возникновения вопросов, так что да, все разделы я не звяжу воедино.
                0
                К какой категории программистов Вы себя относите «новичок/бывалый/мастер»?
                  +1
                  Между новичком и бывалым наверное. Мне по исходникам почемуто проще учиться, просто так читая документацию много чего остается непонятно, пока сам не попробуешь. Поэтому предпочитаю учиться по исходникам.
            0
            Никогда не мог разобраться с нуля в голой документации. Мне, например, в начале нужно понять на базовом уровне «как» это работает. А большинство документаций — ничем не связанные отрывки, в которых увидить картину целиком сложновато.
            +5
            Учитывая что фреймворк новый и информации на русском языке практически нету, то конечно имеет смысл.
              –3
              Он построен на компонентах Laravel, значит документация и обучающие материалы для него уже есть.
            +3
            Так же, как и Silex, практически целиком построенный на Symfony, этот фрейморк, практически целиком построенный на Laravel, сложно назвать действительно «микро».
              +13
              Забавно, что при независимом тестировании этот микрофреймворк всё равно оказался чуть медленней Yii 2.0: github.com/kenjis/php-framework-benchmark
                0
                Посмотрим что ответит Тейлор) Может опять что не запустили перед тестом для оптимизации, как в Laravel
                  +1
                  Laravel оптимизация не сильно помогла. Кстати, на тему Yii, у нас там идёт логирование в файлы в то время как в Laravel и Lumen оно специально вырублено, чтобы не тормозило.
                    0
                    Ну справедливости ради надо заметить, что Yii логи пишет не сразу, а по достижению некого лимита, после чего он их дампит в файл.

                    $flushInterval public property

                    integer $flushInterval = 1000

                    How many messages should be logged before they are flushed from memory and sent to targets. Defaults to 1000, meaning the flush() method will be invoked once every 1000 messages logged.

                    … из документации
                      0
                      Ну да. Но он всё равно их пишет.
                        +2
                        *въедливый режим* А сколько раз он достиг лимита в проведенном тестировании ;)

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

                        А считать, сколько раз у меня болванка непонятная отдалась — это для продакшена бесполезно, тестировать надо на чем-то очень-очень злобном и ресурсоемком…
                          0
                          Скорее всего один, но не знаю.
                  0
                  это «независимое» тестирование очень странное. Мои, да и Тейлора, тесты показывают совсем другие цифры. Даже в дебаг режиме, без оптимизаций и даже с записью сессий в файл, что, кстати, сильно влияет на производительность.
                    +4
                    Там есть исходники. Можно скачать, запустить у себя, посмотреть код. Если вдруг что не так, прислать автору патч.
                      –4
                      исходники чего, фреймворков? так они и так доступны, каждый в своем репо. Задача-то тестить фреймы «как есть», «из коробки», а не патчить и сильно оптимизировать.
                        +4
                        Я про исходники бенчмарка, результаты которого вам показались странными.
                          –2
                          так и я о них, зачем мне все это, когда чистый laravel ставится одной строчкой, а второй запускается тест.
                            +5
                            Тогда не понятно чему вы удивляетесь. Очевидно что на разном железе цифры будут разными.
                            Вышеупомянутый бенчмарк сравнивает производительность базовых приложений на нескольких разных фреймворках.
                            Вся суть в сравнении.
                              0
                              автор «теста» сам не знает почему у него такие цифры получаются github.com/kenjis/php-framework-benchmark/issues/13
                                0
                                Тесты Тейлора ненадежный источник. Он так и не выложил исходники и настройки сервера, значит их нельзя воспроизвести. При этом он таки обещал их расшарить:
                                Ok these Lumen benchmarks just confirm my suspicions that these benchmarks
                                are totally screwed up. Lumen is almost twice as fast as Silex and I can
                                post reproducible bash scripts to demonstrate that.

                                I will literally post a video of my benchmarking these frameworks today to
                                put this to rest. Including blog.

                                Куча баттхерта и никакого подтверждения его слов. Логично предположить, что он лишь пытается выставить Lumen/Laravel в позитивном свете.
                                  0
                                  в своем блоге, в видео, Тейлор все рассказывает и показывает, и это может проверить каждый. В качестве окружения используется Homestead (он доступен, можно поставить и пользоваться), далее lumen c «Hello World» в роуте. Все. Я проверял лично на отдельной машине с Ubuntu 14.04 (nginx, php-fpm) цифры получались даже больше, но соотношение как у Тейлора (да и других), но не как у того парня, где Lumen чуть больше «тяжелого» Laravel 5.
                        +1
                        Гм, ну Yii тоже тестировали и с сессиями в файлах, и с кешем в файлах и с логированием в файлы. Если это всё сунуть в какой-нибуль Redis, бегать будет, конечно, на порядок быстрее. Так что тесты относительно справедливы.
                      +1
                      А если в двух словах, то чего в нём нет из того, что есть в Laravel?
                        0
                        Всего?
                          +3
                          Наверно корректней было бы поставить вопрос чего в Lumen имеет от Лаварель.
                            0
                            Лаварель — это смесь лаванды и акварели? :)
                          +4
                          думаю, что это поможет с ответом
                            0
                            Спасибо!
                            +1
                            в двух английских словах: stackoverflow.com/a/29648574/1331425
                              +4
                              Нормально. То есть всё, что работает медленно, закомментировано. Бенчмарк показывает на этом неплохие циферки, но чтобы работать нормально, надо раскомментировать. Ещё раз убеждаюсь в том, что Тейлор — мегамаркетолог.
                                +1
                                Не отнять, согласен :)
                                0
                                Спасибо!
                              +2
                              А где посмотреть на бенчмарки? Если там бенчмарк «Hello world», то очевидно тестируется FastRoute, а не сам фреймворк.
                                +1
                                Бенчмарк от kenjis: github.com/kenjis/php-framework-benchmark
                                Бенчмарк от Taylor Otwell: taylorotwell.com/how-lumen-is-benchmarked
                                  +8
                                  Ну собственно так оно и есть в бенчмарке Тейлора тестируются роутеры. Мы все знаем, что Никита Попов молодец, спасибо ему за чудесный роутер.
                                    0
                                    А были ли уже попытки прицепить FastRoute к Laravel?
                                      0
                                      У меня была попытка прицепить к Symfony Routing, вроде как Laravel роутер тоже на этом компоненте базируется.
                                      В Symfony есть некоторые магические фичи у роутера, поддержать которые было не просто и я забил.
                                –8
                                Смысл поста в двух словах:
                                Lumen. Он на php. Это фреймворк. Занавес.
                                  0
                                  Действительно элегантный и красивый фреймворк, хорошая документация. Как ruby разработчик, плюсую :)
                                    +1
                                    Для меня важной новостью было скорое (возможно) появление Slim 3. Вот за это спасибо.
                                      0
                                      Начал разбираться, они выпилили миграции, хотя в документации они есть. Возможно в этом и есть суть микрофреймворка?

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое