Search code examples
laravellaravel-8helperobserver-patternobservers

Unable to find observer in Laravel


I tried to register my ObserverHelper in the AppServiceProvider as below, but I am getting the following error.

Unable to find observer: App\Helpers\App\Observers\FileLogObserver

AppServiceProvider.php

use Illuminate\Support\ServiceProvider;
use App\Helpers\ObserverHelper;

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
    }

    public function boot()
    {
        ObserverHelper::register();
    }
}

ObserverHelper.php

namespace App\Helpers;

class ObserverHelper
{
    protected static $observers = [
        'App\Models\FileLogs' => App\Observers\FileLogObserver::class,
    ];

    public static function register()
    {
        foreach (self::$observers as $model => $observer) {
            $model::observe($observer);
        }
    }
}

Solution

  • Try adding a \ (backslash that references the global namespace) in front of the App\Observers\FileLogObserver::class, or import that class.

    With backslash (reference global namespace):

    <?php
    
    namespace App\Helpers;
    
    class ObserverHelper
    {
        protected static $observers = [
            'App\Models\FileLogs' => \App\Observers\FileLogObserver::class,
        ];
    
        public static function register()
        {
            foreach(self::$observers as $model => $observer) {
                $model::observe($observer);
            }
        }
    }
    

    or with import:

    <?php
    
    namespace App\Helpers;
    
    use App\Observers\FileLogObserver;
    
    class ObserverHelper
    {
        protected static $observers = [
            'App\Models\FileLogs' => FileLogObserver::class,
        ];
    
        public static function register()
        {
            foreach(self::$observers as $model => $observer) {
                $model::observe($observer);
            }
        }
    }
    

    Note: Even though your code is a valid solution, consider creating a separate provider for defining observers (ObserverServiceProvider for example).