Implementimi i prindit të të gjitha modeleve në MVC framework-un tuaj

Le të implementojmë klasën prind të të gjitha modeleve:

/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)
    {
      // këtu do të ketë një kod
    }
    
    protected function findMany($query)
    {
      // këtu do të ketë një kod
    }
  }
?>

Siç e shihni, në konstruktorin e klasës ne kryejmë lidhjen me bazën e të dhënave. Megjithatë, ekziston një problem: çdo model i krijuar (nëse brenda një veprimi të kontrolluesit do të ketë disa modele) do të bëjë lidhjen e vet me bazën e të dhënave, dhe kjo nuk është optimale.

Le ta bëjmë në mënyrë që lidhja me bazën e të dhënave të krijohet vetëm për modelin e parë të krijuar, dhe modelet e tjera të përdorin lidhjen tashmë të krijuar. Për këtë, vetinë link do ta bëjmë statike:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // nëse vetia nuk është caktuar, atëherë lidhemi
        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

Kopjoni kodin e dhënë të klasës Model dhe vendoseni atë në skedarin /core/Model.php.

Задание 2

Implementoni metodën findOne në këtë klasë. Kontrolloni funksionimin e saj.

Задание 3

Implementoni metodën findMany në këtë klasë. Kontrolloni funksionimin e saj.