Всем привет!

Буквально несколько дней назад 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)


  1. izac
    15.04.2015 12:11
    +14

    Имеет ли смысл написать статью, о создании маленькой формы регистрации, авторизации на данном микрофреймворке? Для наглядности.


    1. egorsmkv
      15.04.2015 12:37
      -5

      У проекта хорошая документация. Думаю, это будет лишним.


      1. thunderspb
        15.04.2015 16:53
        +3

        Я бы все равно с удовольствием почитал, примеры лишними не бывают.


        1. egorsmkv
          16.04.2015 12:33

          В каждом разделе есть примеры, этого мало?


      1. Stom
        16.04.2015 05:48
        +1

        документация идет по разделам, а увидеть все вместе, в работе, было бы полезно


        1. egorsmkv
          16.04.2015 12:32
          -2

          «было бы полезно» почитать про узкие места данного фреймворка, а не про «увидеть все вместе».

          Как же вы читаете документацию, если не можете связать разделы воедино?


          1. thunderspb
            16.04.2015 12:48
            +1

            Покажите мне программиста или сисадмина, который читает всю документацию от корки до корки прежде чем нажать кнопку. Я читаю документацию по мере возникновения вопросов, так что да, все разделы я не звяжу воедино.


            1. egorsmkv
              16.04.2015 13:15

              К какой категории программистов Вы себя относите «новичок/бывалый/мастер»?


              1. thunderspb
                16.04.2015 13:18
                +1

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


      1. andrewiWD
        16.04.2015 16:10

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


    1. DanDare
      15.04.2015 12:39
      +5

      Учитывая что фреймворк новый и информации на русском языке практически нету, то конечно имеет смысл.


      1. egorsmkv
        15.04.2015 12:41
        -3

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


  1. zeromodule
    15.04.2015 12:27
    +3

    Так же, как и Silex, практически целиком построенный на Symfony, этот фрейморк, практически целиком построенный на Laravel, сложно назвать действительно «микро».


  1. SamDark
    15.04.2015 12:34
    +13

    Забавно, что при независимом тестировании этот микрофреймворк всё равно оказался чуть медленней Yii 2.0: github.com/kenjis/php-framework-benchmark


    1. Nord001
      15.04.2015 15:07

      Посмотрим что ответит Тейлор) Может опять что не запустили перед тестом для оптимизации, как в Laravel


      1. SamDark
        15.04.2015 15:32
        +1

        Laravel оптимизация не сильно помогла. Кстати, на тему Yii, у нас там идёт логирование в файлы в то время как в Laravel и Lumen оно специально вырублено, чтобы не тормозило.


        1. dfuse
          16.04.2015 10:18

          Ну справедливости ради надо заметить, что 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.

          … из документации


          1. SamDark
            16.04.2015 10:18

            Ну да. Но он всё равно их пишет.


            1. dfuse
              16.04.2015 10:22
              +2

              *въедливый режим* А сколько раз он достиг лимита в проведенном тестировании ;)

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

              А считать, сколько раз у меня болванка непонятная отдалась — это для продакшена бесполезно, тестировать надо на чем-то очень-очень злобном и ресурсоемком…


              1. SamDark
                16.04.2015 10:25

                Скорее всего один, но не знаю.


    1. xelam
      16.04.2015 00:27

      это «независимое» тестирование очень странное. Мои, да и Тейлора, тесты показывают совсем другие цифры. Даже в дебаг режиме, без оптимизаций и даже с записью сессий в файл, что, кстати, сильно влияет на производительность.


      1. Zhuravljov
        16.04.2015 01:22
        +4

        Там есть исходники. Можно скачать, запустить у себя, посмотреть код. Если вдруг что не так, прислать автору патч.


        1. xelam
          16.04.2015 01:58
          -4

          исходники чего, фреймворков? так они и так доступны, каждый в своем репо. Задача-то тестить фреймы «как есть», «из коробки», а не патчить и сильно оптимизировать.


          1. Zhuravljov
            16.04.2015 02:48
            +4

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


            1. xelam
              16.04.2015 03:34
              -2

              так и я о них, зачем мне все это, когда чистый laravel ставится одной строчкой, а второй запускается тест.


              1. Zhuravljov
                16.04.2015 04:03
                +5

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


              1. xelam
                16.04.2015 04:04

                автор «теста» сам не знает почему у него такие цифры получаются github.com/kenjis/php-framework-benchmark/issues/13


                1. helarqjsc
                  21.04.2015 10:28

                  Тесты Тейлора ненадежный источник. Он так и не выложил исходники и настройки сервера, значит их нельзя воспроизвести. При этом он таки обещал их расшарить:

                  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 в позитивном свете.


                  1. xelam
                    21.04.2015 12:38

                    в своем блоге, в видео, Тейлор все рассказывает и показывает, и это может проверить каждый. В качестве окружения используется Homestead (он доступен, можно поставить и пользоваться), далее lumen c «Hello World» в роуте. Все. Я проверял лично на отдельной машине с Ubuntu 14.04 (nginx, php-fpm) цифры получались даже больше, но соотношение как у Тейлора (да и других), но не как у того парня, где Lumen чуть больше «тяжелого» Laravel 5.


      1. SamDark
        16.04.2015 09:33
        +1

        Гм, ну Yii тоже тестировали и с сессиями в файлах, и с кешем в файлах и с логированием в файлы. Если это всё сунуть в какой-нибуль Redis, бегать будет, конечно, на порядок быстрее. Так что тесты относительно справедливы.


  1. alcanoid
    15.04.2015 13:09
    +1

    А если в двух словах, то чего в нём нет из того, что есть в Laravel?


    1. SamDark
      15.04.2015 15:31

      Всего?


      1. izac
        15.04.2015 17:05
        +3

        Наверно корректней было бы поставить вопрос чего в Lumen имеет от Лаварель.


        1. limonte
          16.04.2015 09:16

          Лаварель — это смесь лаванды и акварели? :)


    1. xelam
      16.04.2015 00:22
      +4

      думаю, что это поможет с ответом


      1. alcanoid
        16.04.2015 11:31

        Спасибо!


    1. limonte
      16.04.2015 09:06
      +1

      в двух английских словах: stackoverflow.com/a/29648574/1331425


      1. SamDark
        16.04.2015 09:39
        +4

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


        1. limonte
          16.04.2015 09:43
          +1

          Не отнять, согласен :)


      1. alcanoid
        16.04.2015 12:28

        Спасибо!


  1. hell0w0rd
    15.04.2015 20:13
    +2

    А где посмотреть на бенчмарки? Если там бенчмарк «Hello world», то очевидно тестируется FastRoute, а не сам фреймворк.


    1. plashenkov Автор
      15.04.2015 20:17
      +1

      Бенчмарк от kenjis: github.com/kenjis/php-framework-benchmark
      Бенчмарк от Taylor Otwell: taylorotwell.com/how-lumen-is-benchmarked


      1. hell0w0rd
        15.04.2015 20:49
        +8

        Ну собственно так оно и есть в бенчмарке Тейлора тестируются роутеры. Мы все знаем, что Никита Попов молодец, спасибо ему за чудесный роутер.


        1. selitskas
          17.04.2015 16:39

          А были ли уже попытки прицепить FastRoute к Laravel?


          1. hell0w0rd
            17.04.2015 16:57

            У меня была попытка прицепить к Symfony Routing, вроде как Laravel роутер тоже на этом компоненте базируется.
            В Symfony есть некоторые магические фичи у роутера, поддержать которые было не просто и я забил.


  1. cmepthuk
    15.04.2015 23:07
    -8

    Смысл поста в двух словах:
    Lumen. Он на php. Это фреймворк. Занавес.


  1. nemilya
    16.04.2015 10:41

    Действительно элегантный и красивый фреймворк, хорошая документация. Как ruby разработчик, плюсую :)


  1. ainu
    16.04.2015 15:00
    +1

    Для меня важной новостью было скорое (возможно) появление Slim 3. Вот за это спасибо.


  1. izac
    16.04.2015 21:33

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