Model-View-Controller (MVC) আর্কিটেকচার

Symfony এর মৌলিক ধারণা - সিম্ফনি (Symfony) - Web Development

236

Model-View-Controller (MVC) একটি জনপ্রিয় ডিজাইন প্যাটার্ন, যা সফটওয়্যার ডেভেলপমেন্টে অ্যাপ্লিকেশনের গঠন সুসংগঠিত রাখে। এটি অ্যাপ্লিকেশনের ডেটা ম্যানেজমেন্ট, ব্যবহারকারী ইন্টারফেস, এবং লজিককে পৃথক করে কাজ পরিচালনা করে। Symfony একটি MVC ভিত্তিক ফ্রেমওয়ার্ক, যা বড় এবং জটিল প্রজেক্টের উন্নয়নে এই প্যাটার্নকে ব্যবহার করে।


MVC এর মূল ধারণা

  1. Model (মডেল):

    • অ্যাপ্লিকেশনের ডেটা এবং ব্যবসায়িক লজিক পরিচালনা করে।
    • ডাটাবেসের সাথে যোগাযোগ করে ডেটা সংরক্ষণ, সংশোধন, এবং রিটার্ন করতে ব্যবহৃত হয়।
    • Symfony-তে Doctrine ORM ব্যবহার করে মডেল তৈরি করা হয়।

    উদাহরণ (Entity):

    namespace App\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    
    #[ORM\Entity]
    class Product
    {
        #[ORM\Id]
        #[ORM\GeneratedValue]
        #[ORM\Column(type: 'integer')]
        private $id;
    
        #[ORM\Column(type: 'string', length: 100)]
        private $name;
    
        public function getId(): int
        {
            return $this->id;
        }
    
        public function getName(): string
        {
            return $this->name;
        }
    
        public function setName(string $name): void
        {
            $this->name = $name;
        }
    }
    

  1. View (ভিউ):

    • ব্যবহারকারীর কাছে প্রদর্শিত UI (User Interface) তৈরি করে।
    • এটি শুধুমাত্র ডেটা প্রদর্শনের জন্য কাজ করে, এবং কোনো লজিক বা ডেটা ম্যানিপুলেশন করে না।
    • Symfony-তে Twig Template Engine ব্যবহার করে ভিউ তৈরি করা হয়।

    উদাহরণ (Twig Template):

    <!DOCTYPE html>
    <html>
    <head>
        <title>{{ title }}</title>
    </head>
    <body>
        <h1>{{ message }}</h1>
    </body>
    </html>
    

    Controller থেকে Twig এ ডেটা পাঠানো:

    return $this->render('product/show.html.twig', [
        'title' => 'Product Details',
        'message' => 'This is a product page.',
    ]);
    

  1. Controller (কন্ট্রোলার):

    • ব্যবহারকারীর অনুরোধ গ্রহণ করে এবং তার ভিত্তিতে Model এবং View এর মধ্যে সংযোগ স্থাপন করে।
    • লজিক পরিচালনা করে এবং ভিউতে ডেটা প্রেরণ করে।
    • Symfony-তে প্রতিটি কন্ট্রোলার একটি ক্লাস হিসেবে তৈরি হয়।

    উদাহরণ (Controller):

    namespace App\Controller;
    
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Response;
    
    class ProductController extends AbstractController
    {
        public function show(): Response
        {
            $data = [
                'title' => 'Product Page',
                'message' => 'Welcome to the Product Page',
            ];
    
            return $this->render('product/show.html.twig', $data);
        }
    }
    

Symfony-তে MVC এর কাজের প্রক্রিয়া

  1. ব্যবহারকারী অনুরোধ (Request):
    • ব্যবহারকারী যখন ব্রাউজারে একটি URL লিখে, সেই অনুরোধ Symfony-এর Router-এ যায়।
    • Router URL-এর সাথে সংশ্লিষ্ট Controller খুঁজে বের করে।
  2. Controller কাজ শুরু করে:
    • Controller ব্যবহারকারীর অনুরোধের ভিত্তিতে Model থেকে ডেটা সংগ্রহ করে।
    • প্রয়োজনীয় লজিক প্রয়োগ করে।
  3. View তৈরি:
    • Controller ডেটা View (Twig Template)-এ প্রেরণ করে।
    • View ডেটাকে প্রয়োজনীয় আকারে ফরম্যাট করে এবং ব্যবহারকারীর কাছে প্রদর্শন করে।
  4. Response:
    • View-এর রেন্ডার করা HTML ব্যবহারকারীর ব্রাউজারে প্রেরণ হয়।

MVC আর্কিটেকচারের সুবিধা

  1. কোড মডুলারিটি:
    ডেটা, লজিক, এবং ভিউ পৃথক হওয়ার কারণে কোড মডুলার এবং পরিচালনযোগ্য থাকে।
  2. পুনঃব্যবহারযোগ্যতা:
    Model এবং View পুনঃব্যবহার করা যায়, যা ডেভেলপমেন্টে সময় এবং খরচ কমায়।
  3. সহজ রক্ষণাবেক্ষণ:
    প্রতিটি স্তর পৃথক হওয়ার কারণে বাগ ঠিক করা এবং নতুন ফিচার যোগ করা সহজ হয়।
  4. টিমওয়ার্ক:
    আলাদা স্তরে কাজ করার কারণে টিম মেম্বাররা সমান্তরালভাবে কাজ করতে পারে।

MVC প্যাটার্নের বাস্তব উদাহরণ

  • Model:
    ডাটাবেস থেকে পণ্যের তথ্য নিয়ে আসে (যেমনঃ নাম, দাম)।
  • Controller:
    ব্যবহারকারীর অনুরোধ পেয়ে পণ্যের তালিকা তৈরি করে এবং তা View-তে পাঠায়।
  • View:
    পণ্যের তথ্য HTML আকারে ব্যবহারকারীর সামনে প্রদর্শন করে।

Symfony-এর MVC আর্কিটেকচার ডেভেলপমেন্টের জন্য একটি শক্তিশালী কাঠামো প্রদান করে। এটি কোডকে মডুলার, স্কেলেবল এবং পরিচালনযোগ্য করে তোলে, যা বড় এবং জটিল প্রজেক্টের জন্য অত্যন্ত কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...