Имплементација родитеља свих модела у сопственом MVC оквиру

Хајде да имплементирамо родитељску класу свих модела:

/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)
    {
      // овде ће бити неки код
    }
    
    protected function findMany($query)
    {
      // овде ће бити неки код
    }
  }
?>

Као што видите, у конструктору класе обављамо повезивање са базом података. Постоји, међутим, проблем: сваки креирани модел (ако унутар једне акције контролера буде више модела) ће правити своје повезивање са базом података, а то није оптимално.

Хајде да урадимо тако да се повезивање са базом креира само за први креирани модел, а да остали модели користе већ створено повезивање. За то ћемо својство link направити статичким:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // ако својство није задато, онда се повезујемо
        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 и поставите га у фајлу /core/Model.php.

Задание 2

Имплементирајте метод findOne у овој класи. Проверите његов рад.

Задание 3

Имплементирајте метод findMany у овој класи. Проверите његов рад.