Implementación del padre de todos los modelos

Implementemos la clase padre de todos los modelos:

/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)
    {
      // aquí habrá algún código
    }
    
    protected function findMany($query)
    {
      // aquí habrá algún código
    }
  }
?>

Como puedes ver, en el constructor de la clase realizamos la conexión a la base de datos. Sin embargo, existe un problema: cada modelo creado (si dentro de una misma acción del controlador hay varios modelos) hará su propia conexión a la base de datos, y esto no es óptimo.

Hagamos que la conexión a la base de datos se cree solo para el primer modelo creado, y que los demás modelos utilicen la conexión ya creada. Para ello, hagamos la propiedad link estática:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // si la propiedad no está definida, nos conectamos
        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

Copia el código de la clase Model proporcionado y colócalo en el archivo /core/Model.php.

Задание 2

Implementa el método findOne en esta clase. Comprueba su funcionamiento.

Задание 3

Implementa el método findMany en esta clase. Comprueba su funcionamiento.