Pelaksanaan Induk Semua Model dalam Kerangka MVC Sendiri

Mari kita laksanakan kelas induk untuk semua model:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private $link;
    
    public function __construct()
    {
      $this->link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
      mysqli_query($this->link, "SET NAMES 'utf8'");
    }
    
    protected function findOne($query)
    {
      // akan ada beberapa kod di sini
    }
    
    protected function findMany($query)
    {
      // akan ada beberapa kod di sini
    }
  }
?>

Seperti yang anda lihat, dalam pembina kelas kami membuat sambungan ke pangkalan data. Walau bagaimanapun, terdapat masalah: setiap model yang dibuat (jika dalam satu tindakan pengawal terdapat beberapa model) akan membuat sambungannya sendiri ke pangkalan data, dan ini tidak optimum.

Mari kita buat supaya sambungan ke pangkalan data dibuat hanya untuk model pertama yang dibuat, dan model lain menggunakan sambungan yang sudah dibuat. Untuk ini, sifat link kita jadikan statik:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // jika sifat tidak ditetapkan, maka sambung
        self::$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
        mysqli_query(self::$link, "SET NAMES 'utf8'");
      }
    }
    
    protected function findOne($query)
    {
      
    }
    
    protected function findMany($query)
    {
      
    }
  }
?>
Задание 1

Salin kod kelas Model yang diberikan dan letakkannya dalam fail /core/Model.php.

Задание 2

Laksanakan kaedah findOne dalam kelas ini. Uji kerjanya.

Задание 3

Laksanakan kaedah findMany dalam kelas ini. Uji kerjanya.