laravel Junior

What are observers?

Short Answer

Model observers group model event listeners into dedicated classes, providing a clean way to hook into Eloquent lifecycle events.

Detailed Answer

Observers respond to Eloquent model events (created, updated, deleted, saved, etc.) and are organized in dedicated classes: Events observed: retrieved, creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored, forceDeleted Benefits over $dispatchesEvents: - Multiple handlers for the same event - Organized, testable code - Clear separation of concerns - Easier to enable/disable Register observers in AppServiceProvider or model's boot() method.

Code Example

Example
<?php
// php artisan make:observer PostObserver --model=Post

class PostObserver
{
    public function created(Post $post): void
    {
        // Auto-publish to social media
        SocialMediaJob::dispatch($post);
        // Clear cache
        Cache::forget('posts:all');
    }
    
    public function updated(Post $post): void
    {
        if ($post->isDirty('published_at')) {
            $post->user->notify(new PostPublishedNotification($post));
        }
        Cache::forget('posts:all');
    }
    
    public function deleted(Post $post): void
    {
        Cache::forget('posts:all');
        Storage::disk('public')->delete($post->thumbnail);
    }
}

// Register in AppServiceProvider
public function boot(): void
{
    Post::observe(PostObserver::class);
}

Interview Tip

Compare observers to events/listeners: "Observers are model-specific, events are application-wide. Use observers when the logic is tied to a specific model."