<h3>
    <a name="why-queueing-matters" href="#why-queueing-matters">
    </a>
    Kuyruğun önemi
</h3>

<p>Kuyruklar olmadan:</p>
<ul>
    <li>Kullanıcı bir butona tıkladığında</li>
    <li>istek e-posta/SMS API'sini bekler</li>
    <li>yanıt yavaş hissedilir</li>
</ul>

<p>Kuyruklarla:</p>
<ul>
    <li>bildirim işi kuyruğa itilir</li>
    <li>istek hızlı bir şekilde geri döner</li>
    <li>işçi arka planda bildirimi gönderir</li>
</ul>

<p>Bu, gerçek trafik aldığınızda büyük bir kazanım haline gelir.</p>

<hr/>

<h2>
    <a name="step-8-test-notifications-cleanly" href="#step-8-test-notifications-cleanly">
    </a>
    Adım 8: Bildirimleri temiz bir şekilde test edin
</h2>

<p>Laravel’in en iyi özelliklerinden biri <code>Notification::fake()</code>dir.</p>

<p>Hiçbir şey göndermeden davranışları test etmenizi sağlar.<br/></p>

<div class="highlight js-code-highlight">
    <pre class="highlight php"><code>use App\Models\Order;

use App\Models\User;
use App\Notifications\OrderShipped;
use Illuminate\Support\Facades\Notification;

it(‘notifies the user when an order is shipped’, function () {
Notification::fake();

$user = User::factory()->create();
$order = Order::factory()->create(['user_id' => $user->id]);

// Uygulama mantığınız...
$user->notify(new OrderShipped($order));

Notification::assertSentTo($user, OrderShipped::class);

});

<p>Bu, testlerinizi hızlı, güvenilir ve iş mantığınıza odaklanmış tutar.</p>

<hr/>

<h2>
    <a name="a-practical-pattern-i-like" href="#a-practical-pattern-i-like">
    </a>
    Beğendiğim pratik bir desen
</h2>

<p>Gerçek projelerde, genellikle bildirimleri bir durum değişikliğinden sonra tetikliyorum.</p>

<p>Örnek:<br/></p>

<div class="highlight js-code-highlight">
    <pre class="highlight php"><code>class ShipOrderAction

{
public function handle(Order $order): void
{
$order->update([‘status’ => ‘shipped’]);

    $order->user->notify(new OrderShipped($order));
}

}

<p>Neden bu iyi çalışıyor:</p>
<ul>
    <li>controller ince kalır</li>
    <li>bildirim mantığı alan eylemine bağlıdır</li>
    <li>test edilmesi kolay</li>
    <li>HTTP, CLI veya işler aracılığıyla yeniden kullanımı kolaydır</li>
</ul>

<hr/>

<h2>
    <a name="common-mistakes-to-avoid" href="#common-mistakes-to-avoid">
    </a>
    Kaçınılması gereken yaygın hatalar
</h2>

<h3>
    <a name="1-sending-notifications-directly-in-controllers-everywhere" href="#1-sending-notifications-directly-in-controllers-everywhere">
    </a>
    1) Her yerde doğrudan controllerlarda bildirim göndermek
</h3>

<p>Başlangıçta işe yarar, ama uygulamanızın mantığını yayar.</p>

<h3>
    <a name="2-forgetting-to-queue-notifications" href="#2-forgetting-to-queue-notifications">
    </a>
    2) Bildirimleri kuyruklamayı unutmak
</h3>

<p>E-posta ve üçüncü taraf kanallar, isteklerinizi oldukça yavaşlatabilir.</p>

<h3>
    <a name="3-overloading-notifications-with-business-logic" href="#3-overloading-notifications-with-business-logic">
    </a>
    3) Bildirimleri iş mantığıyla şişirmek
</h3>

<p>Bildirimi <strong>gönderme + sunum</strong> odaklı tutun. İş kurallarınız hizmetler/eylemler içinde olmalıdır.</p>

<h3>
    <a name="4-mixing-database-and-broadcast-payloads-without-thinking" href="#4-mixing-database-and-broadcast-payloads-without-thinking">
    </a>
    4) Düşünmeden veritabanı ve yayın yüklerini karıştırmak
</h3>

<p>Veritabanı yükünüz ve gerçek zamanlı ön uç yükünüz farklı ihtiyaçlar varsa, her ikisi için de bir <code>toArray()</code>'ye bağımlı kalmak yerine <code>toDatabase()</code> ve <code>toBroadcast()</code>'i ayrı tanımlayın.</p>

<hr/>

<h2>
    <a name="bonus-ideas-for-production-projects" href="#bonus-ideas-for-production-projects">
    </a>
    Üretim projeleri için bonus fikirler
</h2>

<p>Temel ayarınız çalıştığında, Laravel Notifications gerçekten iyi ölçeklenir:</p>
<ul>
    <li><strong>Admin uyarıları</strong> (yeni kayıt, başarısız ödeme, şüpheli giriş)</li>
    <li><strong>Kullanıcı etkinlikleri</strong> (yorum yanıtları, etiketlemeler, hatırlatıcılar)</li>
    <li><strong>Abonelik olayları</strong> (deneme süresi sonlanıyor, fatura ödendi, yenileme başarısız oldu)</li>
    <li><strong>Gerçek zamanlı UI bildirimleri</strong> yayınlama ile</li>
    <li><strong>Kanal tercihleri</strong> (sadece e-posta, sadece uygulama, her ikisi)</li>
</ul>

<p><code>via()</code> yöntemini dinamik hale getirebilirsiniz:<br/></p>

<div class="highlight js-code-highlight">
    <pre class="highlight php"><code>public function via(object $notifiable): array

{
return $notifiable->wants_email_notifications
? [‘mail’, ‘database’]
: [‘database’];
}

<p>Bu, kullanıcı tercihlerini desteklemenin çok temiz bir yoludur.</p>

<hr/>

<h2>
    <a name="final-thoughts" href="#final-thoughts">
    </a>
    Son düşünceler
</h2>

<p>Laravel Notifications, başlangıçta basit görünseler de, uygulamanız büyüdüğünde oldukça güçlüdür.</p>

<p>Sizin için tutarlı bir yapı sunar:</p>

<ul>
    <li>Meseleyi <strong>nerede</strong> gönderileceğine karar vermek</li>
    <li>Her kanal için formatlama yapmak</li>
    <li>Performans için kuyruklama yapmak</li>
    <li>Güvenli bir şekilde test edebilmek</li>
</ul>

<p>Kullanıcı iş akışları (siparişler, rezervasyonlar, ödemeler, hesaplar, panolar) ile Laravel uygulamaları geliştiriyorsanız, Bildirimlar sürekli olarak <strong>temel</strong> hale gelen o özelliklerden biridir.</p>

Kaynak: Orijinal Makale

Bu Makaleyi Paylaş