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."