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 के आधार पर एक उत्पाद और सभी उत्पादों का आउटपुट उसी तरह कार्यान्वित करें जैसा सिद्धांत में किया गया है।