Header Ads

Header ADS

Laravel Event and Event Listener

 Laravel এ Event এবং Event Listener একটি powerful feature যেটা large scale application এ বিভিন্ন কাজকে loosely coupled করে manage করতে সাহায্য করে। নিচে আমরা একটি Event এবং Event Listener তৈরি করে, তারপর mail পাঠানোর সময় Event ব্যবহার করে একটি বাস্তব উদাহরণসহ ব্যাখ্যা করবো।


🧠 Event & Listener কী?

  • Event: কোনো নির্দিষ্ট কাজ বা ঘটনা ঘটলে আমরা যেটা trigger করি। যেমন: একজন user রেজিস্টার করলে।

  • Listener: Event ঘটার পর যেটা কাজ করে। যেমন: user রেজিস্টার হলে আমরা তাকে একটি welcome email পাঠাই।


✅ Step by Step: Event & Listener Setup

ধরুন, আমরা একটি user রেজিস্টার হলে তাকে welcome email পাঠাবো।

📌 Step 1: Event তৈরি করা


php artisan make:event UserRegistered

app/Events/UserRegistered.php ফাইলে নিচের মতো কোড থাকবে:


namespace App\Events; use App\Models\User; use Illuminate\Queue\SerializesModels; class UserRegistered { use SerializesModels; public $user; public function __construct(User $user) { $this->user = $user; } }

📌 Step 2: Listener তৈরি করা


php artisan make:listener SendWelcomeEmail --event=UserRegistered

app/Listeners/SendWelcomeEmail.php:


namespace App\Listeners; use App\Events\UserRegistered; use Illuminate\Support\Facades\Mail; use App\Mail\WelcomeMail; class SendWelcomeEmail { public function handle(UserRegistered $event) { Mail::to($event->user->email)->send(new WelcomeMail($event->user)); } }

📌 Step 3: Mail class তৈরি করা


php artisan make:mail WelcomeMail

app/Mail/WelcomeMail.php:


namespace App\Mail; use App\Models\User; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class WelcomeMail extends Mailable { use Queueable, SerializesModels; public $user; public function __construct(User $user) { $this->user = $user; } public function build() { return $this->subject('Welcome to our site') ->view('emails.welcome'); } }

📌 Step 4: EventServiceProvider-এ রেজিস্টার করা

app/Providers/EventServiceProvider.php:


protected $listen = [ \App\Events\UserRegistered::class => [ \App\Listeners\SendWelcomeEmail::class, ], ];

📌 Step 5: Event কে Dispatch করা

User রেজিস্ট্রেশনের পর event dispatch করতে হবে:

যেমন Controller এ:


use App\Events\UserRegistered; public function register(Request $request) { $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password), ]); event(new UserRegistered($user)); return response()->json(['message' => 'User registered successfully']); }

📧 Step 6: Welcome Mail এর Blade Template

resources/views/emails/welcome.blade.php:


<h1>Hi {{ $user->name }},</h1> <p>Welcome to our platform! We’re glad to have you.</p>

🔁 Bonus: Queue ব্যবহার করলে ইমেইল পাঠানো background এ হবে

Listener class এ ShouldQueue implement করলে email পাঠানো async করা যায়:

use Illuminate\Contracts\Queue\ShouldQueue;
class SendWelcomeEmail implements ShouldQueue

✅ উপসংহার

Laravel এর Event & Listener system:

  • আপনার কোডকে clean ও maintainable করে তোলে

  • কাজগুলোকে decouple করে

  • background এ queue ব্যবহার করে performance বাড়ায়

No comments

Theme images by fpm. Powered by Blogger.