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,
PostPolicy
ilə 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
$errors
də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 silir
Sual: 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:
RefreshDatabase
trait 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.