Implementering van die ouer van alle modelle in jou MVC-raamwerk

Laat ons die ouerklas van alle modelle implementeer:

/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)
    {
      // daar sal een of ander kode wees
    }
    
    protected function findMany($query)
    {
      // daar sal een of ander kode wees
    }
  }
?>

Soos jy kan sien, in die konstruktor van die klas, inisialiseer ons die skakel na die databasis. Daar is eger 'n probleem: elke model wat geskep word (as daar binne een aksie van die kontroleerder verskeie modelle is) sal sy eie skakel na die databasis maak, en dit is nie optimaal nie.

Kom ons sorg dat die skakel na die databasis slegs vir die eerste geskepte model gemaak word, en die ander modelle reeds geskep skakel gebruik. Om dit te doen, maak ons die eienskap link staties:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // as die eienskap nie gestel is nie, dan skakel ons
        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

Kopieer die gegewe kode van die klas Model en plaas dit in die lêr /core/Model.php.

Задание 2

Implementeer die metode findOne in hierdie klas. Toets sy werking.

Задание 3

Implementeer die metode findMany in hierdie klas. Toets sy werking.