Öz MVC freymvorkunda bütün modellərin valideyninin realizasiyası

Gəlin bütün modellərin valideyn sinifini realizasiya edək:

/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)
    {
      // burada bir kod olacaq
    }
    
    protected function findMany($query)
    {
      // burada bir kod olacaq
    }
  }
?>

Gördüyünüz kimi, sinfin konstruktorunda biz verilənlər bazasına qoşuluruq. Lakin bir problem var: yaradılan hər bir model (əgər nəzarətçinin bir hərəkəti içərisində bir neçə model olarsa) öz qoşulmasını verilənlər bazasına edəcək, bu isə optimal deyil.

Gəlin elə edək ki, verilənlər bazasına qoşulma yalnız ilk yaradılan model üçün yaradılsın, qalan modellər isə artıq yaradılmış qoşulmadan istifadə etsinlər. Bunun üçün link xüsusiyyətini statik edək:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // əgər xüsusiyyət təyin olunmayıbsa, onda qoşuluruq
        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

Model sinfinin göstərilən kodunu kopyalayın və /core/Model.php faylında yerləşdirin.

Задание 2

Bu sinifdə findOne metodunu realizasiya edin. Onun işini yoxlayın.

Задание 3

Bu sinifdə findMany metodunu realizasiya edin. Onun işini yoxlayın.