Laravel Framework для PHP: полное руководство с примерами

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение в Laravel Framework

Laravel — это современный, мощный и элегантный веб-фреймворк для языка PHP, предназначенный для разработки веб-приложений любой сложности: от простых блогов до корпоративных порталов и API-сервисов. Созданный Тейлором Отвеллом в 2011 году, Laravel быстро завоевал популярность благодаря своей выразительности, чистоте кода и богатой экосистеме.

Laravel решает множество типичных задач веб-разработки: маршрутизацию, аутентификацию, работу с базами данных, кэширование, обработку очередей, отправку почты и многое другое. Фреймворк использует архитектурный паттерн MVC (Model-View-Controller), что позволяет разделить логику приложения, представление и данные, делая код более организованным и поддерживаемым.

Зачем нужен Laravel?

  • Быстрая разработка: Встроенные инструменты (Artisan, Blade, Eloquent) ускоряют создание приложений.
  • Безопасность: Защита от SQL-инъекций, XSS-атак, CSRF-токенов и других уязвимостей.
  • Масштабируемость: Поддержка очередей, кэширования (Redis, Memcached) и горизонтального масштабирования.
  • Сообщество: Огромное сообщество, множество пакетов (Packalyst, Laravel Nova, Spark) и подробная документация.
  • Тестирование: Встроенная поддержка PHPUnit и Pest для написания тестов.

Установка Laravel

Для установки Laravel вам потребуется PHP версии 8.1 или выше, Composer (менеджер пакетов для PHP), а также веб-сервер (Apache/Nginx) или встроенный сервер PHP для разработки.

Шаг 1: Установка Composer

Если Composer еще не установлен, скачайте его с getcomposer.org или установите через терминал:

# Для Linux/Mac
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

# Для Windows — скачайте Composer-Setup.exe с официального сайта

Шаг 2: Создание нового проекта Laravel

Используйте Composer для создания проекта:

composer create-project laravel/laravel example-app

Эта команда создаст папку example-app со всеми необходимыми файлами и зависимостями.

Шаг 3: Запуск сервера разработки

Перейдите в папку проекта и запустите встроенный сервер:

cd example-app
php artisan serve

По умолчанию приложение будет доступно по адресу http://localhost:8000.

Быстрый старт с примером кода

Создадим простой маршрут и контроллер, который возвращает приветствие.

1. Создание маршрута

Откройте файл routes/web.php и добавьте:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/hello', function () {
    return 'Hello, Laravel!';
});

2. Создание контроллера

Используйте Artisan для генерации контроллера:

php artisan make:controller GreetingController

В файле app/Http/Controllers/GreetingController.php напишите:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class GreetingController extends Controller
{
    public function greet($name)
    {
        return "Hello, $name! Welcome to Laravel.";
    }
}

3. Обновление маршрута

Измените routes/web.php:

use App\Http\Controllers\GreetingController;

Route::get('/greet/{name}', [GreetingController::class, 'greet']);

4. Проверка

Перейдите по адресу http://localhost:8000/greet/John — вы увидите: "Hello, John! Welcome to Laravel."

Основные методы и функции Laravel

Ниже представлены 10 ключевых методов/функций Laravel с подробным описанием и примерами.

1. Route::get() — Определение GET-маршрута

Что делает: Регистрирует маршрут, который отвечает на HTTP GET-запросы.

Параметры:

  • $uri (string) — URI маршрута (например, '/users').
  • $callback (Closure|array) — функция-обработчик или массив [Контроллер, метод].

Пример:

Route::get('/users', function () {
    return 'Список пользователей';
});

// С контроллером:
Route::get('/users', [UserController::class, 'index']);

2. Route::post() — Определение POST-маршрута

Что делает: Регистрирует маршрут для обработки POST-запросов (обычно для отправки форм).

Параметры: Аналогичны Route::get().

Пример:

Route::post('/users', function (Request $request) {
    $name = $request->input('name');
    return "Создан пользователь: $name";
});

3. view() — Возврат представления (Blade-шаблона)

Что делает: Возвращает HTML-шаблон из папки resources/views.

Параметры:

  • $view (string) — имя шаблона (без расширения .blade.php).
  • $data (array) — массив данных, передаваемых в шаблон (опционально).

Пример:

// resources/views/welcome.blade.php
// <h1>Добро пожаловать, {{ $name }}!</h1>

Route::get('/welcome/{name}', function ($name) {
    return view('welcome', ['name' => $name]);
});

4. DB::table() — Запросы к базе данных (Query Builder)

Что делает: Создает экземпляр построителя запросов для указанной таблицы.

Параметры:

  • $table (string) — имя таблицы в базе данных.

Пример:

use Illuminate\Support\Facades\DB;

$users = DB::table('users')
    ->where('age', '>', 18)
    ->orderBy('name')
    ->get();

foreach ($users as $user) {
    echo $user->name;
}

5. User::find() — Поиск модели по ID (Eloquent ORM)

Что делает: Находит запись в базе данных по первичному ключу (обычно 'id').

Параметры:

  • $id (mixed) — значение первичного ключа.

Пример:

use App\Models\User;

$user = User::find(1);
if ($user) {
    echo $user->email;
} else {
    echo 'Пользователь не найден';
}

6. Model::create() — Массовое создание записи

Что делает: Создает новую запись в базе данных, используя массовое присвоение (mass assignment).

Параметры:

  • $attributes (array) — массив атрибутов (полей) для создания.

Пример:

use App\Models\User;

$user = User::create([
    'name' => 'Иван Иванов',
    'email' => 'ivan@example.com',
    'password' => bcrypt('secret123'),
]);

echo $user->id; // ID созданного пользователя

7. Request::validate() — Валидация входящих данных

Что делает: Проверяет данные запроса на соответствие правилам валидации.

Параметры:

  • $rules (array) — массив правил валидации.
  • $messages (array) — массив кастомных сообщений об ошибках (опционально).

Пример:

use Illuminate\Http\Request;

public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required|string|max:255',
        'body' => 'required|string|min:10',
        'email' => 'required|email|unique:users,email',
    ]);

    // Если валидация пройдена, данные в $validated
    Post::create($validated);
}

8. Mail::to() — Отправка электронной почты

Что делает: Отправляет email через почтовый драйвер (SMTP, Mailgun, Log и т.д.).

Параметры:

  • $recipient (mixed) — получатель (email-адрес или объект User).

Пример:

use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeMail;

Mail::to('user@example.com')->send(new WelcomeMail($user));

// Или с использованием очереди:
Mail::to($user)->queue(new WelcomeMail($user));

9. Cache::remember() — Кэширование с callback-функцией

Что делает: Получает значение из кэша по ключу. Если его нет, выполняет callback и сохраняет результат в кэш на указанное время.

Параметры:

  • $key (string) — ключ кэша.
  • $ttl (int) — время жизни кэша в секундах.
  • $callback (Closure) — функция, возвращающая данные для кэширования.

Пример:

use Illuminate\Support\Facades\Cache;

$users = Cache::remember('active_users', 3600, function () {
    return DB::table('users')->where('active', 1)->get();
});

// Теперь данные будут браться из кэша в течение часа

10. Artisan::call() — Вызов Artisan-команды программно

Что делает: Позволяет выполнить любую Artisan-команду из кода приложения.

Параметры:

  • $command (string) — имя команды (например, 'migrate').
  • $parameters (array) — массив параметров команды (опционально).

Пример:

use Illuminate\Support\Facades\Artisan;

// Запуск миграций
Artisan::call('migrate', ['--force' => true]);

// Очистка кэша
Artisan::call('cache:clear');

echo Artisan::output(); // Получить вывод команды

Реальный практический пример: Блог с комментариями

Создадим мини-блог с возможностью добавления постов и комментариев.

Шаг 1: Создание моделей и миграций

php artisan make:model Post -m
php artisan make:model Comment -m
                
    
    

Рекомендаций