Laravel’de Real-Time Facades Nedir? Nasıl Çalışır?

Laravel, servis container yapısıyla dependency injection (bağımlılık enjeksiyonu) kullanımını kolaylaştırır. Ancak bazı durumlarda her servisi container üzerinden almak ya da özel bir Facade sınıfı oluşturmak gereksiz gelebilir. İşte Real-Time Facades …


This content originally appeared on DEV Community and was authored by Barış Bideratan

Laravel, servis container yapısıyla dependency injection (bağımlılık enjeksiyonu) kullanımını kolaylaştırır. Ancak bazı durumlarda her servisi container üzerinden almak ya da özel bir Facade sınıfı oluşturmak gereksiz gelebilir. İşte Real-Time Facades bu noktada devreye giriyor.

Kısaca özetlemek gerekirse:

Real-Time Facades, herhangi bir sınıfı veya interface'i, özel bir Facade sınıfı yazmadan Facade gibi kullanmanı sağlar.

Facade Nedir?

Laravel’de Facade, container içindeki bir servise statik gibi görünen bir arabirim sunar.
Örneğin Cache::get() ya da Log::info() çağrıları aslında arka planda container içinden çözümlenir.

Ama her Facade için ayrı bir sınıf yazmak gerekir.
Örneğin App\Facades\MyService gibi.
Real-Time Facades ise bu işi senin yerine yapar.

Normal Kullanım vs Real-Time Facade

Önce klasik bir örnek üzerinden gidelim.

Klasik yöntem:

namespace App\Models;

use App\Services\Publisher;
use Illuminate\Database\Eloquent\Model;

class Podcast extends Model
{
    public function publish(Publisher $publisher)
    {
        $this->update(['published_at' => now()]);

        $publisher->publish($this);
    }
}

Burada Publisher sınıfını method parametresi olarak alıyoruz.
Gayet güzel ama her çağrıda bu parametreyi geçirmek gerekiyor.

Real-Time Facade ile:

namespace App\Models;

use Facades\App\Services\Publisher;
use Illuminate\Database\Eloquent\Model;

class Podcast extends Model
{
    public function publish()
    {
        $this->update(['published_at' => now()]);

        Publisher::publish($this);
    }
}

Bak farkı fark ettin mi?

  • Artık Publisher servisini parametre olarak geçmedik.
  • use Facades\App\Services\Publisher; yazarak Laravel’e “bu sınıfı facade gibi kullan” dedik.
  • Yani Publisher::publish() dediğimizde Laravel container’dan otomatik olarak App\Services\Publisher örneğini çözüp metodu çalıştırıyor.

Gerçekten “Statik” mi Çalışıyor?

Hayır.
Publisher::publish() statik gibi görünse de aslında container’dan dinamik olarak çözülüyor.
Bu sayede test ederken mock oluşturabiliyorsun:

Publisher::shouldReceive('publish')
    ->once()
    ->with($podcast);

Yani hem facade rahatlığını hem test edilebilirliği koruyorsun.

Gerçek Hayattan Bir Örnek

Diyelim ki bir Notifier servisin var:

namespace App\Services;

class Notifier
{
    public function sendEmail($to, $subject)
    {
        // E-posta gönderme işlemi
    }
}

Klasik kullanım:

$notifier = app(\App\Services\Notifier::class);
$notifier->sendEmail('test@example.com', 'Merhaba!');

Real-Time Facade ile:

use Facades\App\Services\Notifier;

Notifier::sendEmail('test@example.com', 'Merhaba!');

Tek satırla aynı işi yaptık.
Kod hem okunabilir hem sade.

Ne Zaman Kullanmalı?

Real-Time Facades harika bir kolaylık ama her yerde kullanmak doğru değil.

Kullan:
✅ Basit servis çağrılarında
✅ Model içindeki küçük yardımcı işlemlerde
✅ Hızlı prototip geliştirme aşamalarında

Kullanma:
❌ Büyük veya karmaşık servislerde
❌ Kodun bağımlılıklarını açık görmek istiyorsan
❌ Fazla mock işlemiyle test yazıyorsan

Kısacası, tıpkı kahve gibi:
Azı lezzet, fazlası çarpıntı. ☕

Özet

  • use Facades\ ile başlayan bir import yaptığında Laravel otomatik olarak Real-Time Facade oluşturur.
  • Arka planda container çözümlemesi yapılır, yani dependency injection hâlâ geçerlidir.
  • Testlerde shouldReceive() kullanarak mock oluşturabilirsin.
  • Kodun sadeleşir ama “nereden geliyor bu servis?” sorusu bazen bulanıklaşabilir.


This content originally appeared on DEV Community and was authored by Barış Bideratan


Print Share Comment Cite Upload Translate Updates
APA

Barış Bideratan | Sciencx (2025-11-09T11:40:50+00:00) Laravel’de Real-Time Facades Nedir? Nasıl Çalışır?. Retrieved from https://www.scien.cx/2025/11/09/laravelde-real-time-facades-nedir-nasil-calisir/

MLA
" » Laravel’de Real-Time Facades Nedir? Nasıl Çalışır?." Barış Bideratan | Sciencx - Sunday November 9, 2025, https://www.scien.cx/2025/11/09/laravelde-real-time-facades-nedir-nasil-calisir/
HARVARD
Barış Bideratan | Sciencx Sunday November 9, 2025 » Laravel’de Real-Time Facades Nedir? Nasıl Çalışır?., viewed ,<https://www.scien.cx/2025/11/09/laravelde-real-time-facades-nedir-nasil-calisir/>
VANCOUVER
Barış Bideratan | Sciencx - » Laravel’de Real-Time Facades Nedir? Nasıl Çalışır?. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/11/09/laravelde-real-time-facades-nedir-nasil-calisir/
CHICAGO
" » Laravel’de Real-Time Facades Nedir? Nasıl Çalışır?." Barış Bideratan | Sciencx - Accessed . https://www.scien.cx/2025/11/09/laravelde-real-time-facades-nedir-nasil-calisir/
IEEE
" » Laravel’de Real-Time Facades Nedir? Nasıl Çalışır?." Barış Bideratan | Sciencx [Online]. Available: https://www.scien.cx/2025/11/09/laravelde-real-time-facades-nedir-nasil-calisir/. [Accessed: ]
rf:citation
» Laravel’de Real-Time Facades Nedir? Nasıl Çalışır? | Barış Bideratan | Sciencx | https://www.scien.cx/2025/11/09/laravelde-real-time-facades-nedir-nasil-calisir/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.