Sual: Laravel-də request gəldikdə ilk hansı fayl işləyir?
Cavab:
public/index.php faylı ilk işləyir. Buradan bootstrap/app.php çağrılır və application bootstrap olunur. Sonra kernel (App\Http\Kernel) işləyir, middleware-lər işə düşür, routing icra olunur və controller cavabı response-a çevrilərək geri qaytarılır.
Sual: Route model binding necə işləyir? Cavab: Model binding route parametrlərini avtomatik olaraq model instansiyasına çevirir.
Route::get('/users/{user}', function(User $user) {
return $user;
});Burada {user} ID-si avtomatik olaraq User modelindən tapılır. Əgər tapılmazsa 404 qaytarır.
Sual: hasManyThrough münasibəti nədir?
Cavab:
hasManyThrough əlaqəsi vasitəsilə bir model başqa bir modelə aralıq model üzərindən qoşulur.
Məsələn: Country → User → Post
class Country extends Model {
public function posts() {
return $this->hasManyThrough(Post::class, User::class);
}
}Bu, ölkənin bütün postlarını istifadəçilər vasitəsilə gətirir.
Sual: Gate və Policy fərqi nədir? Cavab:
- Gate – sadə closure əsaslı permission yoxlamasıdır (
Gate::define). - Policy – müəyyən bir model üçün CRUD səlahiyyətlərini idarə edən class-dır. Məsələn,
PostPolicyilə yalnız yazının müəllifi onu silə bilər.
Sual: Form Request istifadə etməyin üstünlükləri nədir? Cavab:
- Validation qaydaları controller-dən ayrılır → daha təmiz kod.
authorize()metodu ilə icazə yoxlamaları edilir.- Avtomatik olaraq
$errorsdəyişənində səhvlər gəlir.
Sual: Cache-də “tag” nə işə yarayır? Cavab: Cache tag-lar eyni kateqoriyaya aid olan cache-ləri bir yerdə idarə etməyə imkan verir.
Cache::tags(['products'])->put('p1', $product, 3600);
Cache::tags(['products'])->flush(); // bütün məhsul cache-lərini silirSual: Laravel job uğursuz olduqda nə baş verir?
Cavab:
Job retry sayı bitdikdə o failed_jobs cədvəlində saxlanılır. php artisan queue:failed ilə baxmaq, queue:retry {id} ilə yenidən işə salmaq olar.
Sual: Laravel Sanctum nə üçündür? Cavab: Sanctum API-lər üçün SPA authentication və token-based API authentication təklif edir. Passport-dan fərqi odur ki, daha yüngül və sadədir.
Sual: Database testlərini necə izolyasiya edirsiniz? Cavab:
RefreshDatabasetrait istifadə olunur → hər testdən əvvəl migrate və rollback.- Yaxud in-memory SQLite istifadə edilir.
use RefreshDatabase;Sual: Repository pattern nə üçündür? Cavab: Repository model ilə business logic arasındakı asılılığı azaldır. Məsələn, Eloquent-dən MySQL-dən MongoDB-yə keçmək istəsək, yalnız repository dəyişir, controller eyni qalır.
Sual: Observer nədir?
Cavab:
Observer model hadisələrini (creating, updating, deleting və s.) dinləyən class-dır. Məsələn, UserObserver istifadəçi yaradıldıqda avtomatik mail göndərə bilər.
Sual: Laravel Scheduler necə işləyir?
Cavab:
schedule:run komandası hər dəqiqə cron ilə çağırılır. İstədiyin əmrləri app/Console/Kernel.php-də təyin edirsən:
protected function schedule(Schedule $schedule) {
$schedule->command('emails:send')->dailyAt('10:00');
}Sual: Rollback hansı hallarda problem yarada bilər? Cavab: Əgər cədvəldə data varsa və migration dəyişiklikləri data ilə uyğun gəlmirsə (məs: sütun silmək), rollback zamanı data itirilə bilər.
Sual: CSRF qorunması necə işləyir?
Cavab:
Hər form Laravel tərəfindən avtomatik _token input ilə gəlir. VerifyCsrfToken middleware bu tokeni session ilə müqayisə edir. Uyğun gəlməzsə request reject edilir.
Sual: php artisan optimize nələri edir?
Cavab:
- Config cache (
config:cache) - Route cache (
route:cache) - Event cache (
event:cache) - View cache (
view:cache)
Bunlar production performansı artırır.