- Без вариантов, — выбор за Laravel!
- Что идёт в Laravel из коробки
- Ещё больше возможностей с документацией Laravel
Без вариантов, — выбор за Laravel!
В Laravel уже есть готовые элегантные решения для стандартных задач, которые необходимы для работы всех современных веб-приложений. Пришло время начать создавать потрясающие приложения и перестать тратить время на поиск необходимых программных пакетов и изобретать велосипед.
Что идёт в Laravel из коробки
Аутентификация в Laravel.
Аутентификация пользователей осуществляется просто - достаточно добавить middleware аутентификации в определение маршрута Laravel:
Route::get('/profile', ProfileController::class)
->middleware('auth');
После аутентификации доступ к аутентифицированному пользователю можно получить через фасад Auth
:
use Illuminate\Support\Facades\Auth;
// Get the currently authenticated user...
$user = Auth::user();
Конечно, можно определить собственное middleware для аутентификации, что позволит гибко настроить процесс аутентификации.
Более подробную информацию о возможностях аутентификации в Laravel можно найти в документации по аутентификации.
Авторизация в Laravel.
Часто возникает необходимость проверить, имеет ли авторизованный пользователь право на выполнение определенного действия. Политики моделей Laravel позволяют сделать это без особых усилий:
php artisan make:policy UserPolicy
После определения правил авторизации в сгенерированном классе политики можно авторизовать запрос пользователя в методах контроллера:
public function update(Request $request, Invoice $invoice)
{
Gate::authorize('update', $invoice);
$invoice->update(/* ... */);
}
Eloquent ORM Laravel.
Боитесь баз данных? Не стоит. С помощью Eloquent ORM в Laravel можно легко взаимодействовать с данными приложения, а также быстро создавать модели, миграции и зависимости:
php artisan make:model Invoice --migration
После того как структура модели и взаимосвязи определены, можно взаимодействовать с базой данных, используя мощный и выразительный синтаксис Eloquent:
// Создание связанной модели...
$user->invoices()->create(['amount' => 100]);
// Обновление модели...
$invoice->update(['amount' => 200]);
// Получение данных модели...
$invoices = Invoice::unpaid()->where('amount', '>=', 100)->get();
// Богатый API для взаимодействия с моделями...
$invoices->each->pay();
Миграции баз данных в Laravel.
Миграции — это аналог контроля версий для базы данных, позволяющий участникам команды определять и совместно использовать схему базы данных приложения:
public function up(): void
{
Schema::create('flights', function (Blueprint $table) {
$table->uuid()->primary();
$table->foreignUuid('airline_id')->constrained();
$table->string('name');
$table->timestamps();
});
}
Валидация в Laravel.
В Laravel существует более 90 мощных встроенных правил валидации, а с помощью Laravel Precognition можно обеспечить прямую валидацию на фронтенде:
public function update(Request $request)
{
$validated = $request->validate([
'email' => 'required|email|unique:users',
'password' => Password::required()->min(8)->uncompromised(),
]);
$request->user()->update($validated);
}
Уведомления и почта в Laravel.
Laravel позволяет быстро отправлять красиво оформленные уведомления пользователям по электронной почте, через Slack, SMS, in-app и т.д:
php artisan make:notification InvoicePaid
После создания уведомления его можно легко отправить одному из пользователей приложения:
$user->notify(new InvoicePaid($invoice));
Хранение файлов Laravel.
Laravel предоставляет надежный уровень абстракции файловой системы, обеспечивая единый унифицированный API для взаимодействия как с локальными файловыми системами, так и с облачными файловыми системами, например Amazon S3:
$path = $request->file('avatar')->store('s3');
Независимо от того, где хранятся файлы, взаимодействовать с ними можно с помощью простого и элегантного синтаксиса Laravel:
$content = Storage::get('photo.jpg');
Storage::put('photo.jpg', $content);
Очереди заданий в Laravel.
Laravel позволяет передавать медленные задания в фоновую очередь, обеспечивая быстрое выполнение веб-запросов:
$podcast = Podcast::create(/* ... */);
ProcessPodcast::dispatch($podcast)->onQueue('podcasts');
Количество рабочих очередей может быть таким, какое необходимо для выполнения работы:
php artisan queue:work redis --queue=podcasts
Для большей наглядности и контроля над очередями Laravel Horizon предоставляет красивую информационную панель и возможность настройки очередей Redis на базе Laravel непосредственно с помощью кода.
Подробнее:
Планирование задач в Laravel.
Планируйте повторяющиеся задания и команды с помощью выразительного синтаксиса и попрощайтесь со сложными конфигурационными файлами:
$schedule->job(NotifySubscribers::class)->hourly();
Планировщик Laravel может работать даже с несколькими серверами и предлагает встроенную защиту от дублирования:
$schedule->job(NotifySubscribers::class)
->dailyAt('9:00')
->onOneServer();
->withoutOverlapping();
Тестирование в Laravel.
Laravel создан и для тестирования. От модульных тестов до браузерных тестов, это позволит более уверенно развёртывать приложение:
$user = User::factory()->create();
$this->browse(fn (Browser $browser) => $browser
->visit('/login')
->type('email', $user->email)
->type('password', 'password')
->press('Login')
->assertPathIs('/home')
->assertSee("Welcome {$user->name}")
);
Events & WebSockets в Laravel.
События Laravel позволяют отправлять и прослушивать события во всем приложении, а слушатели могут быть легко отправлены в фоновую очередь:
OrderShipped::dispatch($order);
class SendShipmentNotification implements ShouldQueue
{
public function handle(OrderShipped $event): void
{
// ...
}
}
С помощью Laravel Echo и WebSockets фронтенд-приложение может подписываться на события Laravel, что позволяет создавать динамические приложения, работающие в режиме реального времени:
Echo.private(`orders.${orderId}`)
.listen('OrderShipped', (e) => {
console.log(e.order);
});
Ещё больше возможностей с документацией Laravel
Это лишь малая часть. В Laravel есть все, что нужно для создания веб-приложения, включая проверку электронной почты, ограничение скорости и пользовательские консольные команды. Изучайте документацию по Laravel, чтобы продолжать учиться.
Перевод с английского официальной информации о Laravel:
https://laravel.com
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)