История моего знакомства с Laгavel вполне заурядна: много лет я писал код на РНР и активно изучал потенциал Rails и других современных веб-фреймворков. В Rails меня привлекало прекрасное сочетание исходных настроек и гибкости, мощные возможности системы управления пакетами стандартного кода Ruby Gems, а также наличие активного сообщества программистов.
С помощью Laravel я написал десятки приложений в рамках своей основной работы и дополнительных проектов, а также познакомился лично и в режиме онлайн с разработчиками, использующими этот фреймворк. Даже имея богатый арсенал инструментов разработки, я наслаждаюсь, когда набираю в командной строке laravel new projectName.
Познакомимся с самим фреймворком
Laravel - это фреймворк для разработки веб-приложений с выразительным элегантным синтаксисом. Мы считаем, что разработка должна быть приятной и творческой, чтобы приносить истинное удовлетворение. Laravel пытается облегчить разработку, упростив общие задачи, используемые в большинстве веб-проектов.
Laravel стремится обеспечить потрясающий опыт разработчика, предоставляя мощные функции, такие как тщательное внедрение зависимостей, выразительный уровень абстракции базы данных, очереди и запланированные задания, модульное и интеграционное тестирование и многое другое.
Независимо от того, являетесь ли вы новичком в PHP или веб-фреймворках или имеете многолетний опыт, Laravel - это фреймворк, который может расти вместе с вами. Мы поможем вам сделать первые шаги в качестве веб-разработчика или подскажем, как вы выведете свой опыт на новый уровень. Нам не терпится увидеть, что вы построите.
Спросите вы почему именно Laravel?
При создании веб-приложения вам доступны различные инструменты и фреймворки. Однако мы считаем, что Laravel - лучший выбор для создания современных полнофункциональных веб-приложений.
Прогрессивная структура
Нам нравится называть Laravel «прогрессивным» фреймворком. Под этим мы подразумеваем, что Laravel растет вместе с вами. Если вы только делаете первые шаги в веб-разработке, обширная библиотека документации, руководств и видеоуроков Laravel поможет вам изучить основы, не перегружая себя.
Если вы старший разработчик, Laravel предоставляет вам надежные инструменты для внедрения зависимостей , модульного тестирования , очередей , событий в реальном времени и многого другого. Laravel оптимизирован для создания профессиональных веб-приложений и готов справляться с корпоративными рабочими нагрузками.
Масштабируемая структура
Laravel невероятно масштабируем. Благодаря удобному для масштабирования характеру PHP и встроенной поддержке Laravel быстрых распределенных систем кеширования, таких как Redis, горизонтальное масштабирование с Laravel очень просто. Фактически, приложения Laravel легко масштабируются для обработки сотен миллионов запросов в месяц.
Требуется экстремальное масштабирование? Такие платформы, как Laravel Vapor, позволяют запускать приложение Laravel в практически неограниченном масштабе с использованием новейшей без серверной технологии AWS.
Структура сообщества
Laravel сочетает в себе лучшие пакеты в экосистеме PHP, чтобы предложить наиболее надежную и удобную для разработчиков структуру. Кроме того, тысячи талантливых разработчиков со всего мира внесли свой вклад в создание фреймворка . Кто знает, может, вы даже станете участником Laravel.
Для кого предназначен Фреймворк Laravel
Этот фреймворк подойдет для человека, знающего базовые методы объектно-ориентированного программирования, язык РНР (или но крайней мере общий синтаксис языков С), а также базовые концепции архитектурного паттерна «Модель - Представление - Контроллер~ (Model - View - Controller, MVC) и обработки шаблонов. Если вы никогда не создавали сайт, это может оказаться слишком сложным. Но если у вас есть опыт программирования, то не обязательно знать что-то о Laravel.
Простыми словами что же такого прекрасного в Laravel?
Composer
Composer — менеджер зависимостей для PHP. Он не предназначен конкретно для Laravel, но Laravel без него не работает.
Composer (с Packagist) содержит тысячи PHP-пакетов от сообщества, большинство из которых имеют минимум зависимостей и могут быть просто и без проблем добавлены в ваше приложение. Поэтому вам не нужно изобретать велосипед, а фреймворк не будет мешать вам использовать существующие решения.
Composer обрабатывает автозагрузку PHP-классов, используя любую конфигурацию из карты классов, файлов, PSR-0 или PSR-4.
Поскольку Composer использует версионность, вы легко можете зафиксировать версии пакетов для вашего приложения. Так вы будете уверены, что везде, где вы разворачиваете своё приложение, будет запускаться одинаковый код.
Начать работать с Laravel очень просто, достаточно установить Composer и выполнить:
composer create-project laravel/laravel
Dotenv
Где вы храните секретную информацию вашего приложения, такую как пароль от БД, логин для email и другие вещи? Laravel 5 использует хорошо известный файл .env , который также используют многие фреймворки для других языков программирования. Это файл, в котором вы определяете пары ключ-значение для любой вашей секретной информации.
Например, ваш файл .env может выглядеть так:
APP_ENV = production
DB_HOST = 127.0.0.1
DB_DATABASE = laraveldb
DB_USERNAME = laravelapp
DB_PASSWORD = str0ngP4sw0rd
И вы можете заполнить ваши файлы настроек вот так:
'connections' => array(
'mysql' => array(
'driver' => 'mysql' ,
'host' => getenv ( 'DB_HOST' ),
'database' => getenv ( 'DB_DATABASE' ),
'username' => getenv ( 'DB_USERNAME' ),
'password' => getenv ( 'DB_PASSWORD' ),
'charset' => 'utf8' ,
'collation' => 'utf8_unicode_ci' ,
'prefix' => '' ,
),
),
Вы можете создать этот файл локально и ещё один на вашем рабочем сервере и затем обновлять ваше приложение, не беспокоясь о БД и других важных секретных данных.
Загрузка файла .env автоматически обрабатывается Laravel с помощью библиотеки Dotenv .
PSR-4
Laravel — первый фреймворк, поддерживающий PSR-4. Прямо из коробки Composer автоматически загрузит все классы из каталога app , используя стандарт автозагрузки PSR-4.
Это значит, что у вас может быть одно пространство имён для вашего приложения, и вы можете структурировать его, как захотите и как посчитаете логичным. Laravel не требует от вас размещения определённых файлов в определённых папках.
Это каталог приложения по умолчанию с пространством имён App :
app
├── Console
│ └── InspireCommand . php
├── Http
│ ├── Controllers
│ │ ├── Auth
│ │ │ ├── AuthController . php
│ │ │ └── PasswordController . php
│ │ └── HomeController . php
│ ├── Middleware
│ │ ├── AuthMiddleware . php
│ │ ├── BasicAuthMiddleware . php
│ │ ├── CsrfMiddleware . php
│ │ ├── GuestMiddleware . php
│ │ └── MaintenanceMiddleware . php
│ └── Requests
│ └── Auth
│ ├── LoginRequest . php
│ └── RegisterRequest . php
├── Providers
│ ├── AppServiceProvider . php
│ ├── ArtisanServiceProvider . php
│ ├── ErrorServiceProvider . php
│ ├── EventServiceProvider . php
│ ├── LogServiceProvider . php
│ └── RouteServiceProvider . php
└── User . php
Как видите, здесь есть некоторые вещи по умолчанию, но вы можете разместить классы там, где захотите, и это делается очень просто.
Вы всегда можете изменить пространство имён приложения с помощью команды:
php artisan app:name YourNamespace
Эта команда пройдёт по всем вашим файлам и изменит в них объявление пространства имён.
IoC-контейнер — расширения ядра
Контейнер обратного управления в Laravel — мощный инструмент для управления зависимостями классов. Внедрение зависимостей представляет собой способ снятия жестко закодированных зависимостей класса. Вместо этого зависимости внедряются во время выполнения, обеспечивая большую гибкость, так как реализация зависимостей может быть легко изменена.
Вы можете использовать IoC-контейнер в вашем приложении, чтобы сделать всё внедряемым и легко тестируемым с помощью объектов-заглушек.
IoC-контейнер может извлекать классы без какой-либо настройки. Например:
class FooBar {
public function __construct ( Baz $baz )
{
$this -> baz = $baz ;
}
}
Как видите, класс Baz автоматически внедрён в класс FooBar . На практике это будет использоваться в контроллерах вот так:
class OrderController extends BaseController {
public function __construct ( Order $orders )
{
$this -> orders = $orders ;
}
public function getIndex ()
{
$all = $this -> orders -> all ();
return View :: make ( 'orders' , compact ( 'all' ));
}
}
В этом примере вы видите, что класс Order внедрён в OrderController без какой-либо дополнительной настройки.
Но в новом Laravel есть кое-что ещё более замечательное, и называется оно — внедрение методов. Это внедрение зависимостей на основе методов.
Например, этот класс может быть ещё проще:
class OrderController extends BaseController {
public function getIndex ( Order $orders )
{
$all = $orders -> all ();
return View :: make ( 'orders' , compact ( 'all' ));
}
}
Вы можете добавить столько зависимостей на основе классов или методов, сколько пожелаете, а IoC-контейнер извлечёт их для вас.
Поскольку всё в Laravel внедряемо, вы легко можете подменить что-нибудь в ядре фреймворка.
Цикл версий
У Laravel очень предсказуемый цикл версий. Через каждые шесть месяцев можно ждать очередной версии. Laravel выходит через один месяц после выхода Symfony.
Вы получаете либо версию с новыми функциями, либо версию с совершенно новым номером. Версии с исправлениями ошибок выходят каждые несколько месяцев. Это хорошо, потому что фреймворк разрабатывается очень быстро, и вы можете рассчитывать на получение улучшений безопасности и других улучшений так быстро, как только возможно.
На основные версии особенно легко переходить, и у вас, вероятно, не возникнет вопросов при обновлении. Но поскольку Laravel является отличной основой для чего бы то ни было, вы можете даже оставаться на одной версии в течение всего года и обнаружите, что для этой версии по-прежнему выходят исправления и улучшения.
На сегодняшний день уже существует Laravel 8. А это подтверждает востребованность и качество поддержки фреймворка.