DEV Community

Ruhul Amin Sujon
Ruhul Amin Sujon

Posted on • Edited on

Laravel IQ - Level 1 - Part 1

প্রশ্ন ১:
Laravel Framework কী? এবং কেন এটি ব্যবহার করা হয়?
উত্তর:
Laravel একটি PHP Framework, যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। এটি ডেভেলপমেন্টকে দ্রুত এবং সহজ করে তোলে। Laravel-এ বিল্ট-ইন ফিচার যেমন Authentication, Routing, Session, এবং Caching ডেভেলপারদের কাজ সহজ করে। এটি কোডের পুনরায় ব্যবহার নিশ্চিত করে এবং প্রজেক্টকে আরও স্ট্রাকচারড করে।

প্রশ্ন ২:
Laravel-এ Middleware কী এবং এটি কীভাবে কাজ করে?
উত্তর:
Middleware হচ্ছে একটি ফিল্টার, যা HTTP অনুরোধ(Request) এবং প্রতিক্রিয়ার(Response) মধ্যে কার্য সম্পাদন করে। এটি ব্যবহার করে অ্যাপ্লিকেশনে বিভিন্ন স্তরে Authentication বা লগিং যুক্ত করা যায়। উদাহরণস্বরূপ, একটি রুটে Middleware যুক্ত করলে, শুধু অথোরাইজড ইউজাররা সেই রুট অ্যাক্সেস করতে পারবে।

Middleware তৈরি করতে:

php artisan make:middleware MiddlewareName
Enter fullscreen mode Exit fullscreen mode

প্রশ্ন ৩:
Eloquent ORM কী?
উত্তর:
Eloquent ORM হল Laravel-এর একটি শক্তিশালী ফিচার, যা ডাটাবেসের সঙ্গে সহজেই কাজ করার জন্য ব্যবহার করা হয়। এটি Object-Oriented পদ্ধতিতে ডাটাবেস মডেল তৈরি এবং পরিচালনা করতে সাহায্য করে। উদাহরণস্বরূপ:

$users = User::all(); // এটি সমস্ত ইউজার ফিরিয়ে দেবে।
Enter fullscreen mode Exit fullscreen mode

প্রশ্ন ৪:
Laravel-এ CSRF Token কী এবং এটি কেন প্রয়োজন?
উত্তর:
CSRF (Cross-Site Request Forgery) Token হল একটি সিকিউরিটি মেকানিজম, যা ফর্ম সাবমিশনে ভুয়া অনুরোধ প্রতিরোধ করে। Laravel ফর্মে অটোমেটিকভাবে একটি CSRF টোকেন যুক্ত করে, যা session এ থাকা টোকেনের সাথে মিলিয়ে রিকোয়েস্ট যাচাই করে। ফর্মে এটি ব্যবহার করা হয়:

@csrf
Enter fullscreen mode Exit fullscreen mode

প্রশ্ন ৫:
Laravel-এ Events এবং Listeners কীভাবে কাজ করে?
উত্তর:
Laravel-এ Events এবং Listeners ব্যবহার করে অ্যাপ্লিকেশনে Event-Driven Programming বাস্তবায়ন করা হয়। কোনো নির্দিষ্ট ইভেন্ট ঘটলে তার সাথে যুক্ত Listener সেই ইভেন্টের উপর ভিত্তি করে কার্য সম্পাদন করে। উদাহরণস্বরূপ, ইউজার রেজিস্ট্রেশনের পর ইমেল পাঠানোর জন্য ইভেন্ট এবং লিসেনার ব্যবহার করা যায়।

ইভেন্ট তৈরি করতে:

php artisan make:event EventName
Enter fullscreen mode Exit fullscreen mode

লিসেনার তৈরি করতে:

php artisan make:listener ListenerName --event=EventName
Enter fullscreen mode Exit fullscreen mode

প্রশ্ন ৬:
Dependency Injection কী এবং এটি কীভাবে Laravel-এ ব্যবহার করা হয়?
উত্তর:
Dependency Injection হল একটি ডিজাইন প্যাটার্ন, যেখানে একটি ক্লাসের নির্ভরশীলতা (dependencies) কনস্ট্রাক্টরের মাধ্যমে সরবরাহ করা হয়। Laravel-এ এটি কনটেইনারের মাধ্যমে সহজেই হ্যান্ডেল করা যায়। উদাহরণস্বরূপ:

public function __construct(UserRepository $userRepo)  
{  
    $this->userRepo = $userRepo;  
}
Enter fullscreen mode Exit fullscreen mode

More Explain:
🧸 Dependency Injection (DI) কী? (ELI5)

ধরো তুমি দুধ খেতে চাও 🥛

খারাপ পদ্ধতি:

তুমি নিজেই গরু খুঁজবে, দুধ দোহাবে, তারপর খাবে
👉 অনেক ঝামেলা

ভালো পদ্ধতি (Dependency Injection):

মা তোমার হাতে সরাসরি দুধ দিয়ে দিল
👉 তুমি শুধু খাও

👉 এখানে:

  • তুমি = class
  • দুধ = dependency
  • মা = injector (Laravel container)

🧠 Definition (Simple)

👉 Dependency Injection মানে হলো: কোনো class নিজে dependency তৈরি না করে, বাইরে থেকে নিয়ে ব্যবহার করা।


😵 Problem Without DI

class OrderService {
    public function createOrder() {
        $payment = new PaymentService(); // tight coupling 😵
        $payment->pay();
    }
}
Enter fullscreen mode Exit fullscreen mode

Problem:

  • Hardcoded dependency
  • Test করা কঠিন
  • Replace করা কঠিন

With Dependency Injection

class OrderService {
    protected $payment;

    public function __construct(PaymentService $payment) {
        $this->payment = $payment;
    }

    public function createOrder() {
        $this->payment->pay();
    }
}
Enter fullscreen mode Exit fullscreen mode

✔ Flexible
✔ Testable
✔ Clean code


🚀 Laravel-এ DI কিভাবে কাজ করে?

Laravel এর একটা powerful system আছে 👉 Service Container

👉 এটা automatically object create করে inject করে দেয়


🔥 Real Laravel Example
Step 1: Service Class

class PaymentService {
    public function pay() {
        return "Payment Done";
    }
}
Enter fullscreen mode Exit fullscreen mode

Step 2: Controller-এ Inject করো

use App\Services\PaymentService;

class OrderController extends Controller {

    protected $payment;

    public function __construct(PaymentService $payment) {
        $this->payment = $payment;
    }

    public function store() {
        return $this->payment->pay();
    }
}
Enter fullscreen mode Exit fullscreen mode

👉 Laravel automatically PaymentService inject করবে ✅

Even Shorter (Method Injection)

public function store(PaymentService $payment) {
    return $payment->pay();
}
Enter fullscreen mode Exit fullscreen mode

✔ Constructor দরকার নেই


🎯 কেন DI ব্যবহার করি?

Benefit Explanation
Loose coupling class independent থাকে
Test easy mock করা যায়
Reusable easily replace করা যায়
Clean architecture maintainable code

🧠 Interview-ready Answer

Dependency Injection is a design pattern where a class receives its dependencies from outside instead of creating them itself. In Laravel, the service container automatically resolves and injects dependencies into controllers, services, and methods.


🔥 Pro Insight (Impress Interviewer)

👉 তুমি বলতে পারো:

Laravel uses Service Container + Auto Resolution
Supports Constructor Injection & Method Injection
Helps follow SOLID principles (Dependency Inversion)


🏁 One-line Simple Answer

👉

নিজে বানানোর বদলে বাইরে থেকে জিনিস নিয়ে ব্যবহার করাই Dependency Injection

প্রশ্ন ৭:
Laravel-এ Queue কী এবং এটি কেন ব্যবহার করা হয়?
উত্তর:
Queue হল একটি ব্যবস্থা, যা ব্যাকগ্রাউন্ড টাস্ক এক্সিকিউট করতে সাহায্য করে। এটি অ্যাপ্লিকেশনের রেসপন্স টাইম কমায়। উদাহরণস্বরূপ, একটি ইমেল পাঠানোর কাজ Queue-তে রেখে ব্যাকগ্রাউন্ডে প্রসেস করা যায়। Queue তৈরি করতে:

php artisan queue:work
Enter fullscreen mode Exit fullscreen mode

প্রশ্ন ৮:
Service Provider কী?
উত্তর:
Service Provider হল Laravel-এর বুটস্ট্র্যাপ ক্লাস, যা অ্যাপ্লিকেশনের সার্ভিস রেজিস্টার এবং বুট করার জন্য ব্যবহার করা হয়। Laravel-এ প্রতিটি সার্ভিসের জন্য একটি সার্ভিস প্রোভাইডার থাকে। নতুন সার্ভিস প্রোভাইডার তৈরি করতে:

php artisan make:provider ProviderName
Enter fullscreen mode Exit fullscreen mode

প্রশ্ন ৯:
Blade Template Engine কী?
উত্তর:
Blade হল Laravel-এর একটি টেমপ্লেট ইঞ্জিন, যা ডাইনামিক HTML তৈরি করতে সাহায্য করে। এটি সহজ এবং ক্লিন সিনট্যাক্সে কাজ করে। Blade ফাইলের এক্সটেনশন .blade.php হয়। উদাহরণ:

@if($user->isAdmin())
    <p>Welcome, Admin!</p>
@endif
Enter fullscreen mode Exit fullscreen mode

প্রশ্ন ১০:
Laravel-এ API Route কীভাবে তৈরি করবেন?
উত্তর:
Laravel-এ API রাউট তৈরি করতে routes/api.php ফাইল ব্যবহার করা হয়। উদাহরণস্বরূপ:

Route::get('/users', [UserController::class, 'index']);
Enter fullscreen mode Exit fullscreen mode

Top comments (0)