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, мобильного бекенда и так называемые стартапы. Энтерпрайз это не для него.

Laravel-4: 30 комментариев

    1. AmdY Автор записи

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

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

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

  1. Вася

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

    1. AmdY Автор записи

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

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

      1. Олег

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

        1. AmdY Автор записи

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

    1. AmdY Автор записи

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

      1. мимопроходящий

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

        1. AmdY Автор записи

          Самому надо просто добавить готовый пакет https://github.com/barryvdh/laravel-elfinder, сразу получаешь и редактор и интегрированный файловый менеджер. Из коробки такие вещи сложно предоставлять из-за проблем с правами и лицензиями.

        2. мимопроходящий

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

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

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

  2. Васо

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

      1. AmdY Автор записи

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

  3. John

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

  4. Роман

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

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

  5. andr

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

    1. мимопроходящий

      Как моему Yii2 это самый идиотский инструмент что я встречал

  6. Eug

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

    1. AmdY Автор записи

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

  7. Виктор

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

    1. AmdY Автор записи

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

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

      1. Саша

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

  8. Webaliser

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

  9. Ibraf

    Виктор, ты конченный кусок говна, нассать тебе на лицо за ту херню , которую ты написал.

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

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