Kõigi mudelite ülemklassi realiseerimine

Loome kõigi mudelite ülemklassi:

/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)
    {
      // siin on mingi kood
    }
    
    protected function findMany($query)
    {
      // siin on mingi kood
    }
  }
?>

Nagu näete, teostame klassi konstruktoris andmebaasi ühenduse. Siiski on probleem: iga loodud mudel (kui ühes kontrolleri tegevuses on mitu mudelit) teeb oma ühenduse andmebaasi, mis pole optimaalne.

Teeme nii, et andmebaasi ühendus luuakse ainult esimese loodud mudeli jaoks, ning ülejäänud mudelid kasutaksid juba loodud ühendust. Selleks muudame omaduse link staatiliseks:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // kui omadus pole määratud, siis ühendume
        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

Kopeerige toodud klassi Model kood ja asetage see faili /core/Model.php.

Задание 2

Realiseerige meetod findOne selles klassis. Kontrollige selle toimimist.

Задание 3

Realiseerige meetod findMany selles klassis. Kontrollige selle toimimist.