Всем привет!
Буквально несколько дней назад Taylor Otwell, разработчик широко известного и, наверное, наиболее популярного в западном мире фреймворка Laravel, написал в своем твиттере, что помимо Laravel он готовит к выпуску кое-что еще, чем, конечно же, заинтриговал подписчиков.
What if Laravel 5.1 isn’t the only framework I’m preparing for release? http://t.co/7oHVioDRYr
— Taylor Otwell (@taylorotwell) 7 апреля 2015
Долго ждать не пришлось. Уже через неделю был представлен 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)
zeromodule
15.04.2015 12:27+3Так же, как и Silex, практически целиком построенный на Symfony, этот фрейморк, практически целиком построенный на Laravel, сложно назвать действительно «микро».
SamDark
15.04.2015 12:34+13Забавно, что при независимом тестировании этот микрофреймворк всё равно оказался чуть медленней Yii 2.0: github.com/kenjis/php-framework-benchmark
Nord001
15.04.2015 15:07Посмотрим что ответит Тейлор) Может опять что не запустили перед тестом для оптимизации, как в Laravel
SamDark
15.04.2015 15:32+1Laravel оптимизация не сильно помогла. Кстати, на тему Yii, у нас там идёт логирование в файлы в то время как в Laravel и Lumen оно специально вырублено, чтобы не тормозило.
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.
… из документацииSamDark
16.04.2015 10:18Ну да. Но он всё равно их пишет.
dfuse
16.04.2015 10:22+2*въедливый режим* А сколько раз он достиг лимита в проведенном тестировании ;)
На самом деле лично у меня никогда не возникало проблем с производительностью Yii благо многое можно подвергнуть оптимизации, если способ «написал как получилось» тормозит. Особенно слой работы с базой. Как правило самое адское торможение именно на неоптимальных запросах и больших выборках.
А считать, сколько раз у меня болванка непонятная отдалась — это для продакшена бесполезно, тестировать надо на чем-то очень-очень злобном и ресурсоемком…
xelam
16.04.2015 00:27это «независимое» тестирование очень странное. Мои, да и Тейлора, тесты показывают совсем другие цифры. Даже в дебаг режиме, без оптимизаций и даже с записью сессий в файл, что, кстати, сильно влияет на производительность.
Zhuravljov
16.04.2015 01:22+4Там есть исходники. Можно скачать, запустить у себя, посмотреть код. Если вдруг что не так, прислать автору патч.
xelam
16.04.2015 01:58-4исходники чего, фреймворков? так они и так доступны, каждый в своем репо. Задача-то тестить фреймы «как есть», «из коробки», а не патчить и сильно оптимизировать.
Zhuravljov
16.04.2015 02:48+4Я про исходники бенчмарка, результаты которого вам показались странными.
xelam
16.04.2015 03:34-2так и я о них, зачем мне все это, когда чистый laravel ставится одной строчкой, а второй запускается тест.
Zhuravljov
16.04.2015 04:03+5Тогда не понятно чему вы удивляетесь. Очевидно что на разном железе цифры будут разными.
Вышеупомянутый бенчмарк сравнивает производительность базовых приложений на нескольких разных фреймворках.
Вся суть в сравнении.
xelam
16.04.2015 04:04автор «теста» сам не знает почему у него такие цифры получаются github.com/kenjis/php-framework-benchmark/issues/13
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 в позитивном свете.xelam
21.04.2015 12:38в своем блоге, в видео, Тейлор все рассказывает и показывает, и это может проверить каждый. В качестве окружения используется Homestead (он доступен, можно поставить и пользоваться), далее lumen c «Hello World» в роуте. Все. Я проверял лично на отдельной машине с Ubuntu 14.04 (nginx, php-fpm) цифры получались даже больше, но соотношение как у Тейлора (да и других), но не как у того парня, где Lumen чуть больше «тяжелого» Laravel 5.
SamDark
16.04.2015 09:33+1Гм, ну Yii тоже тестировали и с сессиями в файлах, и с кешем в файлах и с логированием в файлы. Если это всё сунуть в какой-нибуль Redis, бегать будет, конечно, на порядок быстрее. Так что тесты относительно справедливы.
alcanoid
15.04.2015 13:09+1А если в двух словах, то чего в нём нет из того, что есть в Laravel?
hell0w0rd
15.04.2015 20:13+2А где посмотреть на бенчмарки? Если там бенчмарк «Hello world», то очевидно тестируется FastRoute, а не сам фреймворк.
plashenkov Автор
15.04.2015 20:17+1Бенчмарк от kenjis: github.com/kenjis/php-framework-benchmark
Бенчмарк от Taylor Otwell: taylorotwell.com/how-lumen-is-benchmarkedhell0w0rd
15.04.2015 20:49+8Ну собственно так оно и есть в бенчмарке Тейлора тестируются роутеры. Мы все знаем, что Никита Попов молодец, спасибо ему за чудесный роутер.
selitskas
17.04.2015 16:39А были ли уже попытки прицепить FastRoute к Laravel?
hell0w0rd
17.04.2015 16:57У меня была попытка прицепить к Symfony Routing, вроде как Laravel роутер тоже на этом компоненте базируется.
В Symfony есть некоторые магические фичи у роутера, поддержать которые было не просто и я забил.
nemilya
16.04.2015 10:41Действительно элегантный и красивый фреймворк, хорошая документация. Как ruby разработчик, плюсую :)
ainu
16.04.2015 15:00+1Для меня важной новостью было скорое (возможно) появление Slim 3. Вот за это спасибо.
izac
16.04.2015 21:33Начал разбираться, они выпилили миграции, хотя в документации они есть. Возможно в этом и есть суть микрофреймворка?
izac
Имеет ли смысл написать статью, о создании маленькой формы регистрации, авторизации на данном микрофреймворке? Для наглядности.
egorsmkv
У проекта хорошая документация. Думаю, это будет лишним.
thunderspb
Я бы все равно с удовольствием почитал, примеры лишними не бывают.
egorsmkv
В каждом разделе есть примеры, этого мало?
Stom
документация идет по разделам, а увидеть все вместе, в работе, было бы полезно
egorsmkv
«было бы полезно» почитать про узкие места данного фреймворка, а не про «увидеть все вместе».
Как же вы читаете документацию, если не можете связать разделы воедино?
thunderspb
Покажите мне программиста или сисадмина, который читает всю документацию от корки до корки прежде чем нажать кнопку. Я читаю документацию по мере возникновения вопросов, так что да, все разделы я не звяжу воедино.
egorsmkv
К какой категории программистов Вы себя относите «новичок/бывалый/мастер»?
thunderspb
Между новичком и бывалым наверное. Мне по исходникам почемуто проще учиться, просто так читая документацию много чего остается непонятно, пока сам не попробуешь. Поэтому предпочитаю учиться по исходникам.
andrewiWD
Никогда не мог разобраться с нуля в голой документации. Мне, например, в начале нужно понять на базовом уровне «как» это работает. А большинство документаций — ничем не связанные отрывки, в которых увидить картину целиком сложновато.
DanDare
Учитывая что фреймворк новый и информации на русском языке практически нету, то конечно имеет смысл.
egorsmkv
Он построен на компонентах Laravel, значит документация и обучающие материалы для него уже есть.