PHP-তে MVC-র প্রয়োগ

আসুন আমরা শেখা সবকিছু একসাথে প্রয়োগ দেখি। ধরা যাক, উদাহরণস্বরূপ, আমাদের ওয়েবসাইটে কিছু নিবন্ধ-পৃষ্ঠা আছে। আমরা হয় একটি নিবন্ধ দেখাতে চাই, অথবা সব নিবন্ধ দেখাতে চাই। আসুন বিবেচনা করি কিভাবে আমাদের ফ্রেমওয়ার্কে এটি করা যায়।

ডাটাবেসে টেবিল

শুরুতে ডাটাবেসে একটি টেবিল pages তৈরি করি। এতে id, title এবং text কলাম যোগ করি। PhpMyAdmin এর মাধ্যমে এই টেবিলটি কিছু ডেটা দিয়ে পূরণ করি।

মডেল

একটি রেকর্ড পাওয়ার জন্য একটি মেথড এবং সব রেকর্ড পাওয়ার জন্য একটি মেথড সহ একটি মডেল তৈরি করি:

/project/models/Page.php<?php
  namespace Project\Models;
  use \Core\Model;
  
  class Page extends Model
  {
    public function getById($id)
    {
      return $this->findOne("SELECT * FROM pages WHERE id=$id");
    }
    
    public function getAll()
    {
      return $this->findMany("SELECT id, title FROM pages");
    }
  }
?>

রাউটিং

সংশ্লিষ্ট রাউটিং তৈরি করি:

/project/config/routes.php<?php
  use \Core\Route;
  
  return [
    new Route('/page/:id', 'page', 'one'),
    new Route('/pages/',   'page', 'all'),
  ];
?>

কন্ট্রোলার

কন্ট্রোলার তৈরি করি:

project/controllers/PageController.php<?php
  namespace Project\Controllers;
  use \Core\Controller;
  use \Project\Models\Page;
  
  class PageController extends Controller
  {
    public function one($params)
    {
      $page = (new Page) -> getById($params['id']);
      
      $this->title = $page['title'];
      return $this->render('page/one', [
        'text' => $page['text'],
        'h1' => $this->title
      ]);
    }
    
    public function all()
    {
      $this->title = 'সব পৃষ্ঠার তালিকা';
      
      $pages = (new Page) -> getAll();
      return $this->render('page/all', [
        'pages' => $pages,
        'h1' => $this->title
      ]);
    }
  }
?>

ভিউ

one মেথডের জন্য একটি ভিউ তৈরি করি:

/project/views/page/one.php<h1><?= $h1; ?></h1>
<div id="content">
  <?= $text; ?>
</div>

all মেথডের জন্য একটি ভিউ তৈরি করি:

/project/views/page/all.php<h1><?= $h1; ?></h1>
<div id="content">
  <table>
    <tr>
      <th>id</th>
      <th>title</th>
      <th>লিঙ্ক</th>
    </tr>
    <?php foreach ($pages as $page): ?>
    <tr>
      <td><?= $page['id']; ?></td>
      <td><?= $page['title']; ?></td>
      <td><a href="/page/<?= $page['id']; ?>/">পৃষ্ঠার লিঙ্ক</td>
    </tr>
    <?php endforeach; ?>
  </table>
</div>

ব্যবহারিক কাজ

Задание 1

ধরা যাক আপনার ডাটাবেসে পণ্য আছে। প্রতিটি পণ্যে নাম, মূল্য এবং পরিমাণ, বিবরণ রয়েছে। থিওরিতে যেমন করা হয়েছে তেমনভাবে id দিয়ে একটি পণ্য এবং সব পণ্য দেখানোর ব্যবস্থা বাস্তবায়ন করুন।