Implémentation du parent de tous les modèles

Implémentons la classe parente de tous les modèles :

/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)
    {
      // il y aura du code ici
    }
    
    protected function findMany($query)
    {
      // il y aura du code ici
    }
  }
?>

Comme vous le voyez, dans le constructeur de la classe, nous établissons la connexion à la base de données. Il y a, cependant, un problème : chaque modèle créé (si à l'intérieur d'une même action du contrôleur il y a plusieurs modèles) va établir sa propre connexion à la base de données, ce qui n'est pas optimal.

Faisons en sorte que la connexion à la base soit établie uniquement pour le premier modèle créé, et que les modèles suivants utilisent la connexion déjà créée. Pour cela, rendons la propriété link statique :

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // si la propriété n'est pas définie, alors on se connecte
        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

Copiez le code donné de la classe Model et placez-le dans le fichier /core/Model.php.

Задание 2

Implémentez la méthode findOne dans cette classe. Testez son fonctionnement.

Задание 3

Implémentez la méthode findMany dans cette classe. Testez son fonctionnement.