Сертификация Laravel подтверждает глубокие знания фреймворка и способность решать сложные задачи. Это руководство по подготовке и сдаче экзамена.
Формат экзамена
Основные параметры
| Параметр | Значение |
|---|---|
| Количество вопросов | 45 вопросов |
| Время | 60 минут |
| Проходной балл | ~70% (примерно 32 из 45) |
| Формат | Multiple choice (один или несколько правильных ответов) |
| Пересдача | Доступна через 2 недели |
| Срок действия | Обычно 1-2 года |
| Язык | Английский |
| Формат сдачи | Онлайн с прокторингом |
Правила во время экзамена
- Нельзя использовать IDE, документацию или поисковые системы
- Камера и микрофон должны быть включены
- Нельзя покидать рабочее место
- Один монитор, чистый рабочий стол
- Нет бумажных заметок (или ограничены)
Вес тем (Topics Weight)
Распределение по темам
Architecture (Service Container, Providers, Facades) ████████████ 12%
Routing ████████ 8%
Middleware ██████ 6%
Controllers ██████ 6%
Requests / Validation ████████ 8%
Views / Blade ██████ 6%
URL Generation ████ 4%
Sessions ████ 4%
Eloquent ORM ████████████████ 16%
Database / Migrations / Seeds ████████ 8%
Collections ██████ 6%
Events / Queues ██████ 6%
Testing ██████ 6%
Security / Auth ████ 4%
Ключевые наблюдения:
- Eloquent ORM -- 16% -- самая объёмная тема. Уделите ей максимум внимания
- Architecture -- 12% -- Service Container, Providers, Facades. Без этого не сдать
- Routing + Middleware + Controllers = 20% -- базовые концепции, но с подвохами
- Database + Collections = 14% -- знайте разницу между Eloquent и базовыми коллекциями
- Testing -- 6% -- немного, но вопросы обычно сложные
Типы вопросов
1. Прямой вопрос на знание API
Вопрос: Какой метод используется для soft delete записи в Eloquent?
a) $model->remove()
b) $model->softDelete()
c) $model->delete() ✓
d) $model->trash()
Стратегия: Прямое знание API. Запоминайте точные имена методов.
2. Вопрос на понимание поведения
Вопрос: Что вернёт User::find(999) если пользователь с ID 999 не существует?
a) Пустой объект User
b) false
c) Исключение ModelNotFoundException
d) null ✓
Стратегия: Понимание того, ЧТО возвращает каждый метод.
3. Вопрос с кодом
Вопрос: Какой результат выполнения кода?
$users = User::where('active', true)->get();
$names = $users->pluck('name');
Тип $names:
a) array
b) Illuminate\Database\Eloquent\Collection
c) Illuminate\Support\Collection ✓
d) Generator
Стратегия: Трассировка кода в голове. Знание типов возврата.
4. Вопрос-ловушка
Вопрос: Какой из вариантов корректно определяет scope?
a) public static function scopeActive($query) { ... }
b) public function scopeActive(Builder $query): void { ... } ✓
c) protected function active(Builder $query): void { ... }
d) public function Active(Builder $query): Builder { ... }
Стратегия: Знание точного синтаксиса. Scope должен быть public, начинаться с scope, принимать Builder.
5. Вопрос "что НЕ является"
Вопрос: Что НЕ является типом Eloquent relationship?
a) hasOne
b) belongsTo
c) hasReference ✓
d) morphToMany
Стратегия: Знание ВСЕХ типов отношений наизусть.
Стратегия подготовки
Фаза 1: Основы (2-3 недели)
- Пройти все разделы курса -- от Architecture до Testing
- Решить все quiz-тесты -- не пропускать
- Записать "белые пятна" -- темы, где допускаете ошибки
Фаза 2: Углубление (2-3 недели)
- Перечитать документацию Laravel -- особенно неочевидные разделы
- Практиковать написание кода -- создать тестовый проект
- Изучить исходный код Laravel -- хотя бы ключевые классы
- Пройти tricky-вопросы -- разделы 2-5 этой секции
Фаза 3: Симуляция (1 неделя)
- Пройти mock-экзамен -- засечь время (60 минут)
- Проанализировать ошибки -- вернуться к проблемным темам
- Повторить mock -- стремиться к 85%+
- Ночь перед экзаменом -- легко повторить flashcards, не учить новое
Методы запоминания
- Spaced Repetition -- повторяйте материал с увеличивающимися интервалами
- Active Recall -- закрывайте ответы и вспоминайте самостоятельно
- Код в голове -- мысленно трассируйте код без IDE
- Teach Others -- объясняйте концепции вслух
- Flashcards -- для API методов и их возвращаемых типов
Управление временем на экзамене
Расчёт
45 вопросов / 60 минут = ~1.3 минуты на вопрос
Стратегия
-
Первый проход (30-35 минут):
- Ответьте на все вопросы, в которых уверены
- Отметьте сомнительные для возврата
- Не тратьте больше 1.5 минут на вопрос
-
Второй проход (15-20 минут):
- Вернитесь к отмеченным вопросам
- Перечитайте внимательно
- Используйте метод исключения
-
Финальная проверка (5-10 минут):
- Проверьте, что не пропустили вопросы
- Пересмотрите сомнительные ответы
- Не меняйте ответы без веской причины
Золотые правила
- Не застревайте -- если не знаете, отметьте и двигайтесь дальше
- Первый инстинкт -- часто правильный, не меняйте без причины
- Исключение -- если осталось 2 варианта, шансы 50/50
- Читайте ВНИМАТЕЛЬНО -- ключевое слово может быть "НЕ"
Распространённые ошибки
1. Путаница в именах методов
<?php
// find() vs findOrFail()
User::find(1); // Returns null if not found
User::findOrFail(1); // Throws ModelNotFoundException
// first() vs firstOrFail()
User::where('email', 'x')->first(); // Returns null
User::where('email', 'x')->firstOrFail(); // Throws exception
// create() vs make() (factories)
User::factory()->create(); // Saves to DB
User::factory()->make(); // Only in memory
2. Путаница в параметрах отношений
<?php
// hasOne/hasMany: (Related, foreignKey, localKey)
$this->hasMany(Comment::class, 'post_id', 'id');
// belongsTo: (Related, foreignKey, ownerKey)
$this->belongsTo(User::class, 'user_id', 'id');
// belongsToMany: (Related, pivotTable, foreignPivotKey, relatedPivotKey)
$this->belongsToMany(Role::class, 'role_user', 'user_id', 'role_id');
3. Неправильный порядок аргументов
<?php
// Route model binding: parameter name must match variable name
Route::get('/users/{user}', function (User $user) { ... }); // Correct
Route::get('/users/{id}', function (User $user) { ... }); // Wrong!
// Middleware parameters
Route::middleware('role:admin,editor'); // role:param1,param2
4. Забытые детали
$fillablevs$guarded-- пустой$guarded = []разрешает ВСЕSoftDeletes-- это global scope- Accessor в camelCase, доступ в snake_case
- Pivot-таблица в алфавитном порядке
sync()УДАЛЯЕТ лишние записи
5. Типичные ловушки
withTrashed()-- это метод Builder, не модели$this->hasOne(Phone::class)-- foreign key на стороне Phone, не UserEvent::fake()подавляет model eventsassertJson()-- subset matching,assertExactJson()-- exact
Чек-лист готовности
Перед экзаменом убедитесь, что вы знаете:
- Service Container: binding, resolving, contextual binding
- Service Providers: register vs boot, deferred providers
- Facades: как работают, real-time facades
- Route: model binding, groups, middleware, rate limiting
- Middleware: priority, terminate, groups
- Controllers: resource, invokable, form requests
- Validation: rules, custom rules, form requests
- Blade: components, slots, directives, layouts
- Eloquent: relationships (все типы), scopes, events
- Collections: Eloquent vs base, key methods
- Casts: built-in, custom, enum, encrypted
- API Resources: JsonResource, conditional attributes
- Factories: states, sequences, relationships
- Events: dispatching, listeners, broadcasting
- Queues: jobs, chains, batches, retries
- Testing: HTTP, database, mocking, fakes
- Auth: Sanctum, guards, policies, gates