Laravel-4

Последнее время меня пугают некоторые тенденции для библиотек в PHP, вместо простого и быстрой разработки мы получаем JAVA. Сейчас много php фреймворков и я их делю на две основные категории:

1. Монстры с большой гибкостью и возможностью менять любой компонент. Они отлично подходят для кровавого энтерпрайза. В этой категории два лидера Symfony 2 и Zend Framework 2, хотя последний у меня вызывает скепсис, слишком уж сырой он появился на свет.

2. Фреймворки для быстрой разработки, они менее архитектурно красивы, зато не требуют писать такую кучу кода. Среди них следует отметить широко известные Yii и Kohana.

Есть ещё микрофреймворки, php расширения, pear и т.д., но как правило они лучше подходят в качестве отдельных компонент или на очень уж простые проекты.

Я же решил рассказать о Laravel, буквально вчера появилась 4-я версия этого прекрасного фреймворка из категории 2. О нём пока мало известно, хотя 3-я версия была очень хороша и имела систему бандлов. Чего в полной мере не было у конкурентов.

Laravel позиционирует себя как php фреймворк для ремесленников. Для гуру есть symfony, а php для тех, кому нужно быстро наклепать средней руки веб проект. В нём используется много статических вызовов, чтобы не заморачиваться с зависимостями, но при этом за счёт использования паттерна Facade, у нас нет проблем с переопределением и тестированием. В 4-й версии используется много компонентов из symfony 2, ребята не пишут велосипедов, а лишь делают те компоненты, которые они могут сделать удобнее и быстрее. Larvel очень быстрый.

Основные плюшки.

1. RSETful routing.

Route::group(array('before' => 'auth'), function()
{
    Route::get('/', function()
    {
        // Has Auth Filter
    });

    Route::post('user/{id?}', function()
    {
        // Has Auth Filter
    });
});

Мы можем задавать тип заброса, объеденять роуты в группы, добавлять pre-after фильтры, можем роутить контроллер

Route::controller('users', 'UserController');

И мега фича — роутинг ресурсов, что оечнь помогает при разработке под мобильные платформы или при создании REST API

Route::resource('photo', 'PhotoController');

В результате мы будем обрабатывать урлы вида

Метод УРЛ Действие Имя роута
GET /resource index resource.index
GET /resource/create create resource.create
POST /resource store resource.store
GET /resource/{id} show resource.show
GET /resource/{id}/edit edit resource.edit
PUT/PATCH /resource/{id} update resource.update
DELETE /resource/{id} destroy resource.destroy

2. Командная строка и поддержка composer.

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

php artisan list

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

В старой версии установка сторонних расширений-бандлов делалось с помощью той же командной строки, но с появлением composer-а этот функционал переложили на него.

3. Bundle или Package.

Раньше были банды, которые расширяли функционал фреймворка и позволяли использовать готовые компоненты-контроллеры. Но ребята из Laravel опять прогнулись под стандарты и переименовали их в Package, подключили composer и сейчас уже 16 страниц на Packagist. Что удивительно, учитывая, что стабильный релиз был лишь на этой неделе. Из чего мы имеем следующий плюч.

4. Комьюнити, комьюнити….

Эти удивительные ребята мало кричат о крутости любимого фреймворка, но много пишут чтобы сделать его лучше. Стиль перенят из Ruby on Rails, много скринкастов и статей, регулярно проводятся конференции, в качестве IDE предпочитают Sublime text, да и для поддержки автокаплита нужно ставить отдельный пакет. И да, вы можете заказать себе майку, заметьте, там нет кричащей надписи с названием фреймворка, а понятно лишь для своего круга.

5. Очереди (Queues).

Удивительно, но очередям выделено особое место, потому что ребята понимают что в современном мире даже письма отсылаются с помощью очередей. Поддерживаются сервисы очередей  BeanstalkdIronMQAmazon SQS. Берёте supervisor, поднимаете через artisan демона-слушателя и работаете с очередью без плясок с бубном.

Mail::queue('emails.welcome', $data, function($message)
{
    $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});

6. Компоненты, которые нужны в жизни настоящего проекта, безопасность, формы, шаблонизатор с наследованием, сессии, отправка писем в одну строку, валидация, пагинация, IoC и  тестирование компонетова, контроллеров, TDD с phpunit или BDD с Behat. При этом использования всего этого добра в 1-2 строки, а не через сотню конфигов и десяток цепочек вызовов.

В 4-й версии докрутили компонент для работы с базой данных, теперь ORM умеет делать джойны. Из коробки поддерживается MySQL, Postgres, SQLite, SQL Server и из NoSql Redis и Mongo.

Плюсов ещё много, я постараюсь подвести черту.

Итого:

Laravel — быстрый, удобный фреймворк, с большим функционалом, хорошей производительностью и поддержкой современных технологий. Он замечательно подходит под нагруженные сайты, для создания REST API, мобильного бекенда и так называемые стартапы. Энтерпрайз это не для него.

Вам также может понравиться

Об авторе amdy

30 комментариев

    1. Это интересный момент, джойнов как таковых ORM не предусматривает до сих пор, всё тянется в несколько запросов. В новой версии ORM появилась появилось ключевое слово with, которое заранее подтягивает данные.

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

      Но у Laravel есть query builder, где можно составлять оптимальные запросы, если припрёт.

  1. но почему такая тупая установка? почему обязательно какой-то сраный composer? почему нельзя просто скачать и работать?

    1. Это нужно чтобы ничего не качать, а просто работать.
      Composer отслеживает зависимости от других библиотек и самого php, следит за версиями, скачивает эти самые пакеты автоматически. Благодаря компосеру сам ларавел устанавливается в отду строку composer create-project laravel/laravel, автоматически скачивается актуальная версия фреймворка и библиотек, генерируется токен и проводится оптимизация.
      Помимо всего в состав компосера входит готовый автолодер и не нужно писать require …..

      Компосер это обязательный софт для php разработчика и обязательно должна быть поддержка в своих библиотеках. Например, тот же yii без компосера просто ужасен, а проекты на нём превращаются в клубок зависимостей.

      1. Ага, только иногда бьешься с этим говнозером битый час, чтобы что-то поставить. Работает правильно в 40% случаев. Часто не ставит даже то, что есть на этом packagist.

        1. С компосером вообще проблем нет, всё устанавливается одной строчкой. Ни разу не встречал ситуации, чтобы что-то не ставилось. МОжете привести хоть один пример их этих 40%?

    1. Наверное, за счёт компосера он стал чуть сложнее по началу, а вот за счёт новых более удобных и гибких компонентов, потом становится всё проще.
      Новый проект стоит начинать на 4-м, есть сразу готовые сборки с авторизацией и минимальной админкой, типа https://github.com/andrew13/Laravel-4-Bootstrap-Starter-Site

      1. Хорошая сборка для быстрого старта, жаль только что не tinymce в качестве редактора, хотя самому можно добавить

        1. я поменял на CkEditor http://ckeditor.com/download
          Меняется так — в шаблоне app\views\admin\layouts\modal.blade.php
          убираем подключение скриптов корявого wysihtml5

          Далее подключаем

          //$(‘.wysihtml5’).wysihtml5(); — комментим
          $(‘.wysihtml5’).ckeditor(); — добавляем
          Все готово

  2. Вашу мать, ну не ставится у меня компостер этот грёбанный ввинде на диск D. Подавайте ему С млять только. Гавно гавно, кругом гавно.

      1. Под виндой надо сразу разварачивать vagrant и ставить homestead, не надо заморачиваться установкой lamp, git, composer и ловить затем грабли.

  3. Laravel один из лучших фреймворков современного php. Очень логично построен и заточен на получение красивого результата в сжатые сроки.

  4. Стою между двух огней. Знаю ZF1, ZF2 начинаю на работе изучать. Так же знаю Kohana. Но хочется ещё чего-то на замену Kohanе, то ли Laravel то ли Yii, никак не могу определиться. Увы, ваша статья тоже не дала пинка в какую либо сторону. =))) В идеале хотел бы знать оба, но параллельно не выйдет никак. А почему вам не нравится Yii? Или нравится, но меньше?

    P.S. У вас очепятка в «1. RSETful routing.» правильно «1. RESTful routing.».

  5. Yii 2 тоже любит композер, как по мне так самое логичное решение с которым я работал это Codeigniter, скачал настроил и работай, без всяких тупых композеров и миграций которые неизвестно чтоделают

  6. Срань этот ваш ларавел. Что то доавил дай знать огб этом ту, а еще тут, вот тут еще пропиши путь. Нет один раз прописать патенр и спать спокойно. Этот фреймворк больше похож на груду функций нежели на что то дельное.
    Yii вам в руки!

    1. Тяжело в учении, легко в бою. Второй yii 2 так же поднял планку входного порога, вот только там всё сделано убого и неудобно, laravel после этого кажется сказкой. Все кто попробовал laravel в реальных условиях на yii уже не возвращаются, разве что на symfony мигрируют, там ещё больше танцев с бубном, но зато более академически верно.

  7. Да говно этот сраный laravel. В руки насрать и выкинуть долбоебу который сделал этот ебнутый фреймворк. Особенно последняя версия этого говна которое он почему то назвал фреймворком. Ставиться хер знает как. То запрашивает пароль которые кстати хрен знает откуда брать то не спрашивает. Как этот полудурок сделал этот говнокод для laravel которые хер знает как работает. Никакой ни логики ни стабильности. Тоже какасаеться и update файла composer.json. Такая же долбоебская логика. То спрашивает пароль не понятно откуда его брать то не спрашивает. Так что искренне желаю что бы этот мудак который написал эту хуйню называемую фреймворком laravel сдох от бубонной чумы. И если ты это прочитаешь то вот тебе мой совет не можешь срать не мучай жопу мудила

    1. Вы же понимаете, что composer — это отдельный инструмент, который просто используется для управления зависимостями и версиями и не имеет отношения к самому фреймворку? Никаких паролей вводить не нужно, это уже ваши косяки какие-то.

      Это очень хорошо, что вы споткнулись входном пороге из composer, не дойдя до самого фреймворка и коммерческих проектов на нём, вам ещё учиться и учиться. И ругать за это нужно себя, а не фреймворк и его автора.

      1. AmdY, респект за сдержанность.
        Виктор, ты самый лучший пример «программистов» которые тянут php вниз.

  8. symfony для гуру — весьма сомнительно. Как раз все эти недоделанные фреймворки по части для чего-то на коленке кривовато среднячкового. Но на вкус и цвет…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *