Фреймворк вашего следующего веб-приложения

в 4:13, , рубрики: development, framework, laravel, php, Веб-разработка, метки: , , ,

Каждый раз когда стоит задача выбора фреймворка для написания нового проекта, мы (веб-разработчики) скорей всего выбираем то, что уже хорошо знаем и постоянно используем. Мир PHP фреймворков достаточно богат и самыми крупными игроками являются: CodeIgniter, Kohana, Symfony, Yii, Zend Framework. Но я хочу обратить ваше внимание на принципиально новый, а вернее принципиально новую ветку лучшего фреймворка, с которым мне доводилось иметь дело. Встречайте, Laravel 4!

Что такое фреймворк

Для начала давайте выясним что такое фреймворк на самом деле. Согласно википедии, фреймворк это:

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

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

Что такое Laravel

Laravel это набор лучших практик из мира PHP разработки. От фреймворка веет одновременно и простотой и профессионализмом, которым обладают его разработчики.

Простота начинается на этапе установки. Ведь достаточно вбить всего одну строчку в командной строке и дождаться пока все установится:

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

А профессионализм заключается в том, что фреймворк несет в себе и проповедует использование таких паттернов как:

  • DI (Dependency Injection)
  • Repository
  • Observable
  • Singleton
  • Facade
  • Factory
  • Iterator
  • etc...

И Laravel предоставляет вам возможность использовать их крайне эффективно. Например, чтобы осуществить DI какого-то класса достаточно написать:

class UserController extends Controller {
		private $users;
    
		public function __construct(UserRepository $users) {
    		$this->users = $users;
	    }
}

Laravel сам создаст экземляр класса `UserRepository`. И если в `UserRepository` тоже требуется DI каких-то классов, Laravel так же создаст их экземпляры. (прим. чем хорош и полезен DI и какие еще есть способы реализации его разбирать в данном посте не будем).

Так же стоит упомянуть о том, что Laravel легко расширяем, то есть если вы используете сервер очередей, а Laravel не умеет работать с ним, то вам достаточно написать класс (драйвер) для работы с вашим сервером очередей — наследуясь от класса Queue и реализуя интерфейс QueueInterface, а затем прописать в соответствующем конфиге, что для очередей следует использовать такой-то класс.

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

Queue::push('SendEmail@send', array('message' => $message));

или для вызова события:

Event::fire('user.login', array($user));

Кратко, лаконично и элегантно, не так ли?

Следует так же упомянуть об ORM в Laravel (какой же фреймворк если в нем нет ORM?), который называется Eloquent (прим. что в переводе означает — красноречивый, выразительный). И он действительно оправдывает свое название. Чтобы выбрать первую запись из таблицы `users`, для которой у нас есть модель `User` требуется написать:

User::first();

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

$users = User::where('is_active', 1)->orderBy('created_at', 'DESC')->get();

Код читается очень легко и приятно.

Допустим, у нас есть таблица `roles` и таблица, которая связывает роли пользователей и сами роли — `user_roles`. Чтобы добавить связь в классе `User` нужно просто написать 3 строчки:

public function roles() {
    	return $this->belongsToMany(Role::class, 'user_roles');
}

и если вы захотите выбрать пользователей вместе с их ролями код будет выглядеть следующим образом:

$users = User::with('roles')->get();

И снова срабатывает wow-эффект :)

Для того чтобы ознакомиться со всеми возможностями и прелестями Eloquent ORM я рекомендую заглянуть в официальную документацию и открыть для себя кучу интересных возможностей (http://laravel.com/docs/eloquent).

Laravel невероятно удобен и крут для создания RESTful API, ведь в методе контроллера достаточно написать:

	$user = User::find(1);
    
	return $user;

и Laravel преобразит данную модель в JSON. Очень удобно. Так же есть другие возможности для создания RESTful API, которые следует изучить в официальной документации.

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

Документированность

Еще ни один фреймворк не был столь кратко и понятно документирован как Laravel. Вам нужно знать как работать с очередями? Пожалуйста, заходите в раздел Queues и читаете как работать с ними. При чем оказывается, что вариантов работы с ними имеется несколько — выбираете понравившийся или подходящий к вашей задаче и вперед! Хотите узнать как расширить ядро? Пожалуйста, и на это есть ответы с примерами.

Обо всем уже позаботились

Выше я писал как просто использовать возможности фреймворка. И это не только прекрасный ORM, удобная отдача данных, но так же невероятно красивый и гибкий роутинг, тестируемость всего и вся, шаблонизатор Blade, Schema Builder и т.д. Кстати о тестах, вам больше не надо беспокоиться о том, что когда вы используете Mock объекты в своих тестах, фреймворк может отработать неожиданным образом или не то как вы планировали. Laravel уже содержит тесты на весь свой функционал. Вам не нужно тестировать фреймворк. Тестируйте свой код. Разработчики отнеслись с большой ответственностью к тестам и работоспособности фреймворка.
Вам не надо больше удивляться тому, что где-то происходит магия и что-то функционирует не так, как должно быть. Здесь работает все именно так, как написано в документации.

Кто стоит за кулисами?

Taylor Otwell

image

Главный разработчик фреймворка. Именно он думает о том как должен выглядеть фреймворк и его API, и решает вводить или нет тот или иной функционал.

Phill Sparks

image

Dayle Rees

image

Shawn McCool

image

Все эти ребята имеют полный доступ к репозиторию и занимаются непосредственно ядром.

?>

В заключении хочется сказать, что Laravel набирает обороты очень быстро. В trending на github уже продолжительное время находится на первом месте, а среди PHP-фреймворков на 2-м. Появляются сообщества, при чем достаточно отзывчивые. Так же есть и сообщество в России. Нас немного, но мы в тельняшках :) Вступайте, будем очень рады.
Laravel возвращает те чувства, когда ты первый раз сел за программирование и у тебя начинает получаться, те чувства, которые доставляли тебе удовольствия от программировании на PHP, а не превращали разработку в какую-то рутинную работу.

Автор: misterio

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js