Системные требования
Laravel 11 предъявляет следующие минимальные требования к серверному окружению:
| Требование | Минимальная версия |
|---|---|
| PHP | 8.2+ (рекомендуется 8.4) |
| Composer | 2.x |
| BCMath PHP Extension | Обязательно |
| Ctype PHP Extension | Обязательно |
| cURL PHP Extension | Обязательно |
| DOM PHP Extension | Обязательно |
| Fileinfo PHP Extension | Обязательно |
| JSON PHP Extension | Обязательно |
| Mbstring PHP Extension | Обязательно |
| OpenSSL PHP Extension | Обязательно |
| PCRE PHP Extension | Обязательно |
| PDO PHP Extension | Обязательно |
| Tokenizer PHP Extension | Обязательно |
| XML PHP Extension | Обязательно |
Ловушка экзамена: Начиная с Laravel 11, минимальная версия PHP повышена до 8.2. Laravel 10 поддерживал PHP 8.1+. На экзамене могут уточнять минимальную версию PHP для конкретной версии фреймворка.
Установка Composer
Composer -- это менеджер зависимостей для PHP, который является обязательным инструментом для работы с Laravel.
<?php
// Composer autoloader — the heart of modern PHP
// Laravel uses PSR-4 autoloading standard
require __DIR__ . '/vendor/autoload.php';
// After this line, all classes from packages
// and your app are available without manual require
Глобальная установка Composer
# Download and install Composer globally
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"
# Verify installation
composer --version
Структура composer.json
{
"name": "laravel/laravel",
"type": "project",
"require": {
"php": "^8.2",
"laravel/framework": "^11.0"
},
"require-dev": {
"fakerphp/faker": "^1.23",
"laravel/pail": "^1.0",
"laravel/pint": "^1.13",
"laravel/sail": "^1.26",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.0",
"phpunit/phpunit": "^11.0"
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
}
}
Для экзамена: Секция
autoload.psr-4определяет сопоставление пространств имён и директорий. Ключ"App\\"означает, что классApp\Models\Userбудет загружен из файлаapp/Models/User.php.
Создание нового проекта
Способ 1: Через Composer create-project
# Create a new Laravel project
composer create-project laravel/laravel my-app
# With specific version
composer create-project laravel/laravel my-app "11.*"
# Navigate to project directory
cd my-app
# Start development server
php artisan serve
Способ 2: Через Laravel Installer
# Install Laravel Installer globally
composer global require laravel/installer
# Create a new project
laravel new my-app
# Laravel Installer offers interactive setup:
# - Starter Kit (Breeze, Jetstream, None)
# - Testing framework (Pest, PHPUnit)
# - Database (SQLite, MySQL, PostgreSQL, SQL Server)
# - Git repository initialization
Важно для Senior: Laravel Installer в новых версиях предлагает интерактивную настройку при создании проекта, включая выбор стартового набора, тестового фреймворка и базы данных. Это значительно ускоряет начальную настройку.
Способ 3: Laravel Sail (Docker)
# Create project with Sail (Docker-based)
curl -s "https://laravel.build/my-app" | bash
# With specific services
curl -s "https://laravel.build/my-app?with=mysql,redis,meilisearch" | bash
# Start the environment
cd my-app
./vendor/bin/sail up -d
# Run artisan commands through Sail
./vendor/bin/sail artisan migrate
./vendor/bin/sail composer require laravel/sanctum
<?php
// Sail uses Docker under the hood
// Default services include: MySQL, Redis, Meilisearch, Mailpit, Selenium
// You can customize services in docker-compose.yml
// Sail provides a convenient shell alias
// Add to ~/.bashrc or ~/.zshrc:
// alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'
Файл окружения (.env)
Laravel использует библиотеку vlucas/phpdotenv для управления переменными окружения.
Структура .env файла
# Application settings
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:generated_key_here
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
# Logging
LOG_CHANNEL=stack
LOG_LEVEL=debug
# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
# Cache & Sessions
CACHE_STORE=database
SESSION_DRIVER=database
QUEUE_CONNECTION=database
# Redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
# Mail
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
Генерация ключа приложения
# Generate APP_KEY — REQUIRED for encryption
php artisan key:generate
# The key is used for:
# - Encrypting cookies
# - Session data encryption
# - Encrypting values with Crypt facade
# - Password reset tokens
Критически важно: Без
APP_KEYшифрование не будет работать корректно. При деплое на новый сервер обязательно нужно сгенерировать ключ. Если ключ изменился, все ранее зашифрованные данные станут нечитаемыми.
Доступ к переменным окружения
<?php
declare(strict_types=1);
// Method 1: env() helper — ONLY in config files!
// config/database.php
return [
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'mysql' => [
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
],
],
];
// Method 2: config() helper — USE EVERYWHERE in application code
$dbHost = config('database.connections.mysql.host');
$appName = config('app.name', 'Laravel'); // With default value
// Method 3: Env facade (rarely used)
use Illuminate\Support\Env;
$value = Env::get('CUSTOM_VAR');
Ловушка экзамена: Функция
env()должна вызываться ТОЛЬКО внутри конфигурационных файлов (папкаconfig/). В коде приложения (контроллерах, сервисах, моделях) всегда используйтеconfig(). Причина: после кэширования конфигурации (php artisan config:cache) функцияenv()возвращаетnullдля всех переменных, потому что.envфайл не загружается.
.env.example и .env.testing
# .env.example — template for team members
# Committed to version control, contains placeholder values
APP_NAME=Laravel
DB_CONNECTION=mysql
DB_DATABASE=your_database
# .env.testing — used when running tests
# Overrides .env values during testing
APP_ENV=testing
DB_CONNECTION=sqlite
DB_DATABASE=:memory:
<?php
declare(strict_types=1);
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\App;
final class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
// Check current environment
if (App::environment('production')) {
// Force HTTPS in production
\Illuminate\Support\Facades\URL::forceScheme('https');
}
// Check multiple environments
if (App::environment(['local', 'staging'])) {
// Enable debug tools
}
}
}
Первый запуск
Стандартный набор команд после создания проекта
# 1. Copy environment file
cp .env.example .env
# 2. Generate application key
php artisan key:generate
# 3. Install dependencies
composer install
# 4. Install frontend dependencies
npm install
# 5. Run migrations
php artisan migrate
# 6. Seed database (if seeders exist)
php artisan db:seed
# 7. Start development server
php artisan serve
# Application available at http://localhost:8000
# 8. Start Vite dev server (for frontend assets)
npm run dev
Artisan -- командная утилита Laravel
# List all available commands
php artisan list
# Get help for a specific command
php artisan help migrate
# Useful artisan commands for getting started
php artisan about # Application overview (Laravel 11+)
php artisan env # Display current environment
php artisan --version # Laravel version
php artisan tinker # Interactive REPL
<?php
declare(strict_types=1);
// Tinker — Laravel's powerful REPL
// Perfect for quick testing and debugging
// In tinker you can:
// > App\Models\User::count();
// > App\Models\User::factory()->create();
// > config('app.name');
// > event(new App\Events\UserRegistered($user));
Laravel Herd (macOS / Windows)
Laravel Herd -- это нативная среда разработки для Laravel, которая включает PHP, Nginx и другие инструменты.
# Herd provides:
# - Pre-installed PHP (multiple versions)
# - Nginx configuration
# - Automatic .test domain resolution
# - Node.js included
# - Zero configuration
# With Herd, your projects at ~/Herd are automatically served:
# ~/Herd/my-app → http://my-app.test
Для Senior разработчика: На продакшене рекомендуется использовать Laravel Forge или Laravel Vapor. Herd и Valet -- инструменты исключительно для локальной разработки. Sail (Docker) подходит как для разработки, так и для CI/CD пайплайнов.
Обновление Laravel
# Update Laravel framework
composer update laravel/framework
# Update all dependencies
composer update
# Check for outdated packages
composer outdated
# Laravel Shift — automated upgrade tool
# https://laravelshift.com
# Automates migration between Laravel versions
<?php
declare(strict_types=1);
// Check Laravel version programmatically
use Illuminate\Foundation\Application;
$version = Application::VERSION; // e.g., "11.0.0"
// In artisan
// php artisan --version
// Output: Laravel Framework 11.x.x