Visų modelių tėvinės klasės implementacija

Leiskite implementuoti visų modelių tėvinę klasę:

/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)
    {
      // čia bus kažkoks kodas
    }
    
    protected function findMany($query)
    {
      // čia bus kažkoks kodas
    }
  }
?>

Kaip matote, klasės konstruktoriuje mes atliekame prisijungimą prie duomenų bazės. Tačiau yra problema: kiekvienas sukurtas modelis (jei vieno kontrolerio veiksmo viduje bus keli modeliai) atliks savo prisijungimą prie duomenų bazės, o tai nėra optimalu.

Padarykime taip, kad prisijungimas prie duomenų bazės būtų sukurtas tik pirmam sukurtam modeliui, o likę modeliai naudotų jau sukurtą prisijungimą. Tam padarykime savybę link statine:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // jei savybė nenustatyta, tada jungiamės
        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

Nukopijuokite pateiktą klasės Model kodą ir patalpinkite jį faile /core/Model.php.

Задание 2

Implementuokite metodą findOne šioje klasėje. Patikrinkite jo veikimą.

Задание 3

Implementuokite metodą findMany šioje klasėje. Patikrinkite jo veikimą.