PHP တွင် MVC ကိုအသုံးပြုခြင်း

လေ့လာထားသမျှအားလုံးကို အတူတကွအသုံးပြုပုံကို ကြည့်ရအောင်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့၏ဝက်ဘ်ဆိုက်တွင် ဆောင်းပါးများ/စာမျက်နှာများ ရှိသည်ဆိုပါစို့။ ကျွန်ုပ်တို့သည် ဆောင်းပါးတစ်ခုကိုပြသရန် သို့မဟုတ် ဆောင်းပါးအားလုံးကို ပြသရန် လိုချင်ပါသည်။ ကျွန်ုပ်တို့၏ framework ထဲတွင် ဤအရာကို မည်သို့လုပ်ဆောင်နိုင်သည်ကို ကြည့်ရအောင်။

ဒေတာဘေ့စ်ရှိ ဇယား

စတင်ရန် ဒေတာဘေ့စ်တွင် 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");
    }
  }
?>

Routing

သက်ဆိုင်ရာ routing ကိုလုပ်ပါမည်။

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

Controller

Controller ကိုလုပ်ပါမည်။

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
      ]);
    }
  }
?>

View များ

one နည်းလမ်းအတွက် view တစ်ခုလုပ်ပါမည်။

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

all နည်းလမ်းအတွက် view တစ်ခုလုပ်ပါမည်။

/project/views/page/all.php<h1><?= $h1; ?></h1>
<div id="content">
  <table>
    <tr>
      <th>id</th>
      <th>title</th>
      <th>link</th>
    </tr>
    <?php foreach ($pages as $page): ?>
    <tr>
      <td><?= $page['id']; ?></td>
      <td><?= $page['title']; ?></td>
      <td><a href="/page/<?= $page['id']; ?>/">စာမျက်နှာသို့ link</td>
    </tr>
    <?php endforeach; ?>
  </table>
</div>

လက်တွေ့လေ့ကျင့်ခန်းများ

Задание 1

သင့်ဒေတာဘေ့စ်တွင် ထုတ်ကုန်များရှိသည်ဆိုပါစို့။ ထုတ်ကုန်တစ်ခုစီတွင် အမည်၊ ဈေးနှုန်း၊ အရေအတွက်နှင့် ဖော်ပြချက်တို့ ပါဝင်ပါသည်။ သီအိုရီတွင်လုပ်ထားသည့်အတိုင်း id ဖြင့် ထုတ်ကုန်တစ်ခုနှင့် ထုတ်ကုန်အားလုံးကို ထုတ်ပြရန် အကောင်အထည်ဖော်ပါ။