Implementace rodiče všech modelů ve vlastním MVC frameworku

Pojďme implementovat rodičovskou třídu všech modelů:

/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)
    {
      // tady bude nějaký kód
    }
    
    protected function findMany($query)
    {
      // tady bude nějaký kód
    }
  }
?>

Jak vidíte, v konstruktoru třídy provádíme připojení k databázi. Existuje však problém: každý vytvořený model (pokud uvnitř jedné akce kontroleru bude několik modelů) vytvoří své vlastní připojení k databázi, což není optimální.

Udělejme to tak, aby připojení k databázi bylo vytvořeno pouze pro první vytvořený model a ostatní modely používaly již vytvořené připojení. K tomu uděláme vlastnost link statickou:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // pokud vlastnost není nastavena, připojíme se
        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

Zkopírujte uvedený kód třídy Model a umístěte jej do souboru /core/Model.php.

Задание 2

Implementujte metodu findOne v této třídě. Vyzkoušejte její funkčnost.

Задание 3

Implementujte metodu findMany v této třídě. Vyzkoušejte její funkčnost.