Laravel observers ile bir model için oluşturduğunuz tüm olay takibini(listener) bir sınıf içerisine toplayabilirsiniz. Eloquent tarafından yönetilen modellerin olay takiplerini bir araya getirmek laravel observers ile çok kolay olacaktır. Bu yazımda laravel observers’ın nasıl kullanıldığını ve nerelerde kullanılabileceğiniz dair ufak önerilerden bahsedeceğim.

Laravel Observer Nasıl Oluşturulur?

Laravel observer oluşturmak için laravel’in bir çok konuda yardımımıza yetişen php artisan komutlarından faydalanıyoruz. make:observer komutu sizin için belirttiğiniz model’e özel observer dosyasını oluşturacaktır. Bu komut projenizde App/Observers dizinine observer’ların oluşmasını sağlıyor. Eğer bu klasör projenizde bulunmuyorsa endişelenmenize gerek yok. Komutu çalıştırdığınızda klasörde oluşacaktır. User model’i için örnek oberserver oluşturma komutu:

php artisan make:observer UserObserver --model=User

Oluşturduğunuz observer dosyası bu şekilde olacaktır.

namespace App\Observers;

use App\Models\User;

class UserObserver
{
    /**
     * Handle the User "created" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function created(User $user)
    {
        //
    }

    /**
     * Handle the User "updated" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function updated(User $user)
    {
        //
    }

    /**
     * Handle the User "deleted" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function deleted(User $user)
    {
        //
    }

    /**
     * Handle the User "forceDeleted" event.
     *
     * @param  \App\Models\User  $user
     * @return void
     */
    public function forceDeleted(User $user)
    {
        //
    }
}

Model ile Observer İlişkisi Nasıl Oluşturulur?

Observer’ı oluşturduktan sonra bu observer’ın hangi modelin event’lerini takip edeceğini tanımlamanız gerekiyor bunun için ilgili model içerisinde tanımlama yapabileceğiniz gibi App\Providers\EventServiceProvider isimli provider içerisinde de yapabilirsiniz. Ama benim tavsiyem kod düzeni ve hangi modelde hangi observer’ın olduğunu rahatça görebilmeniz adına model içinde tanımlamak olacaktır.

Model içinde observer tanımlama:

use App\Models\User;
use App\Observers\UserObserver;

/**
 * Register any events for your application.
 *
 * @return void
 */
public function boot()
{
    User::observe(UserObserver::class);
}

Model için observer tanımlayıp kullanmak bu kadar basit. Laravel’in observers için hazırlamış olduğu kendi dökümanını incelemek isterseniz buradan ulaşabilirsiniz.

Laravel Observer Kullanım Önerileri

Laravel Oberser’ı eloquent tarafından modellerde bir değişiklik olduğunda fire edilebilen eventler olan retrieved, creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored ve replicating eventlerinin tamanı için kullanabilirsiniz. Her olay için observer dosyanızda yeni bir method tanımlamak o event’ı dinlemeye başlamanız için yeterli olacaktır.

Laravel’in ne olduğu hakkında bir bilginiz yoksa buradan laravel hakkında yazdığım kısa açıklamayı inceleyebilirsiniz. Ya da laravel hakkındaki diğer yazılarıma göz atmak isterseniz buradan inceleyebilirsiniz.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz