Рэалізацыя бацькі ўсіх мадэляў у сваім 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 у гэтым класе. Праверце яго працу.