# Laravel geliştiricisi — 2014'ten beri

> Laravel ile çalıştığım işler: API'ler, kuyruk tüketen arka plan süreçleri, test ve framework'ün sunduğunu ne zaman kullanıp ne zaman bırakacağım.

- Öne çıkanlar: 12 yıl
- Deneyim: 2014'den bu yana
- Güncelleme: 2026-10-31
- Kaynak: https://muhammetsafak.com/tr/uzmanlik/laravel/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
## Laravel ekosisteminde ben

Laravel benim için PHP'nin üstüne bir ek değil, bir çalışma biçimi: rota, kuyruk, doğrulama, yetkilendirme ve test aynı çatı altında, aynı sözleşmeyle duruyor. [PHP sayfası](https://muhammetsafak.com/tr/uzmanlik/php/) dilin kendisini anlatıyor; bu sayfa o çatıyı nasıl kullandığımı.

Framework'ün sunduğu her şeyi kullanmak zorunda olmadığımı zamanla gördüm. Bir kalıbı hazır geldiği için değil, ihtiyaç duyulduğu için alıyorum.

Yeni sürümlere de aynı gözle bakıyorum: sorum "bu harika mı?" değil, "bu benim probleme uyuyor mu?". Laravel 4'ten itibaren sürüm ve geçiş notlarımı blogda yazıyorum. Mikroservis sınırları, event-driven tasarımın kendisi ve veritabanı iç mekaniği gibi konuları maliyetleriyle birlikte [Mühendislik bölümü](https://muhammetsafak.com/tr/muhendislik/) tarafında yazıyorum.

## Laravel Geliştirici nedir?

Laravel, PHP ile yazılmış bir web uygulama framework'üdür: rota, veritabanı erişimi, kuyruk, doğrulama ve yetkilendirme gibi işleri hazır katmanlarla sunar. Laravel geliştiricisi, bu katmanların üzerinde uygulamanın iş kuralını yazan kişidir.

## Laravel Geliştirici ne iş yapar?

Laravel ile API'ler, web uygulamaları ve kuyruktan iş tüketen arka plan süreçleri yazıyorum. İş kuralını controller'lara ve modellere yaymak yerine ayrı, test edilebilir sınıflarda tutuyorum; kuyruk, zamanlanmış görev, yetkilendirme ve test tarafını aynı uygulamanın içinde kuruyorum.

## Bu alandaki son yazılar

- [Prod erişimi tek kişideydi, o kişi izne çıktı](https://muhammetsafak.com/tr/blog/prod-erisimi-tek-kisideydi-queryproxy/) (Blog, 2026-09-14): Üretim veritabanına erişimi olan tek kişi tatile gidince geliştirme durdu. İhtiyaç dört cümleye indi; her biri bir tasarım kararına dönüştü.
- [Dual-write'tan outbox'a: idempotent tüketim ve alan-seviyesi şifreleme günlüğü](https://muhammetsafak.com/tr/blog/outbox-idempotent-tuketim-ve-alan-sifrelemesi/) (Blog, 2026-06-22): Kaybolan event'ler beni transactional outbox'a, at-least-once teslim de idempotent tüketime götürdü; GDPR alanlarını satır seviyesinde şifreledim.
- [Bir e-fatura entegrasyonunda numara çakışmasını çözmek](https://muhammetsafak.com/tr/blog/e-fatura-entegrasyonunda-numara-cakismasi/) (Blog, 2026-06-03): Üretimde iki worker aynı fatura numarasını üretti. Race condition ile yasal 'gap' arasındaki ikilemi gerçek bir projede nasıl çözdüğümün günlüğü.

## Bu alandaki ölçümler

- [Laravel'in preload eğrisi: 123 dosya, 1.912 dosyadan sekiz kat fazla kazandırıyor](https://muhammetsafak.com/tr/research/laravel-preload-egrisi/) (2026-08-22): Eğri hacimle orantılı değil. İlk 1.592 dosya (Laravel çekirdeği) 30 ms kazandırıyor ve açılışa 1,2 saniye ekliyor. Sonraki 1.094 Symfony dosyası 9,5 ms kazandırıyor, bedava. Ondan sonraki **123 dosya** (psr, carbon) 15,7 ms kazandırıyor — kendinden önceki 1.094 dosyadan fazla. Ve son 1.912 dosya yalnız 1,8 ms kazandırıp açılışa 1,2 saniye daha yazıyor. Yani önceki kaydın tavan olarak ölçtüğü "hepsini derle", eğrinin başlangıç noktası dışındaki en kötü fiyat/performans bölgesi: 2.809 dosyada durmak 12,77 ms ve 1.514 ms açılış verirken, 4.721 dosya 10,96 ms için 2.691 ms istiyor.

## Birlikte kullandığım teknolojiler

- Laravel: Rota, kuyruk, doğrulama, yetkilendirme ve test aynı çatı altında.
- Composer: Laravel paketlerinin geldiği yer; topluluk paketlerini seçici değerlendiriyorum.
- PHPUnit: Laravel projelerinde eski kod tabanlarında karşılaştığım test aracı.
- Pest: Yeni Laravel projelerinde tercih ettiğim test katmanı.
- Redis: Laravel'de önbellek, oturum ve kuyruk deposu olarak kullandığım depo.
- MySQL: Eloquent'in arkasındaki birincil ilişkisel depo.
- RabbitMQ: Faturalandırmayı senkron akıştan çıkardığım yer.

## Bu alanda sorulanlar

- [Sorgu iş kurallarını Eloquent local scope'larda mı yoksa repository katmanında mı tutmalıyım?](https://muhammetsafak.com/tr/sor-bakalim/sorgu-is-kurallarini-eloquent-local-scopelarda-repository-katmaninda/) (2026-10-27)
- [Birçok modele bağlanan yorumlar için polymorphic ilişki mi yoksa ayrı tablolar mı; index ve foreign key açısından hangisi daha sağlıklı?](https://muhammetsafak.com/tr/sor-bakalim/bircok-modele-baglanan-yorumlar-polymorphic-iliski-ayri-tablolar/) (2026-09-29)
- [İşlediğim satırları aynı anda güncellerken chunk yerine chunkById mı kullanmalıyım?](https://muhammetsafak.com/tr/sor-bakalim/isledigim-satirlari-ayni-anda-guncellerken-chunk-yerine-chunkbyid-mi-kullanmaliyim/) (2026-09-01)

## Sık sorulanlar

### Laravel ile kaç yıldır çalışıyorsun?

2014'ten bu yana, 12 yıldır.

### Laravel geliştirici ne iş yapar?

PHP'nin üstüne oturan Laravel framework'üyle web uygulaması, API ve arka plan işi yazar. Bende bu; iş kuralını uygulamanın içinde doğru yere koymak, kuyruk ve zamanlanmış görevleri kurmak, yetkilendirmeyi ve test yüzeyini oluşturmak demek.

### Laravel ile PHP arasındaki fark ne?

PHP dilin kendisi, Laravel onun üstünde çalışan bir framework. PHP sayfasında dilin ekosistemini ve framework kararını anlatıyorum; bu sayfada Laravel'in sunduğu çatıyı nasıl kullandığımı.

### Laravel'de iş kuralını nereye koyuyorsun?

Controller'ı ince tutuyorum: iş kuralı action sınıflarında, doğrulama form request'lerde, yetkilendirme policy ve gate'lerde duruyor. Controller'a ve modele yayılan kural, ilk büyük değişiklikte kimsenin bulamadığı yere gidiyor.

### Laravel'in hangi parçaları hakkında yazdın?

Blog arşivinde Eloquent ve ilişkileri, middleware, service provider ve container, policy ve gate, kuyruk ve Supervisor, zamanlanmış görevler, Livewire, Inertia, Octane ve WebSocket ile broadcasting üzerine ayrı yazılar var.

### Laravel'de kuyruk işçilerini nasıl çalıştırıyorsun?

Laravel'in kuyruk katmanını ve işçi süreçlerini Supervisor ile ayakta tutmayı blogda ayrı bir yazıda anlattım. İşin senkron mu asenkron mu yürüyeceği kararı ise framework'ten önce geliyor.

### Laravel'de testi nasıl kuruyorsun?

Yeni projelerde Pest, eski kod tabanlarında PHPUnit kullanıyorum; Laravel'de test yazma alışkanlığını ve Pest'e geçişi blogda ayrıca yazdım.

### Laravel ile arayüzü nasıl kuruyorsun?

İki yolla: Laravel'i API olarak kullanıp web ve React Native istemcilerini aynı API'den besliyorum, ya da arayüzü sunucu tarafından çıkarıyorum. İkinci yol için Livewire ve Inertia üzerine blogda yazdım.
