Implementazione del genitore di tutti i modelli

Implementiamo la classe genitore di tutti i modelli:

/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)
    {
      // qui ci sarà del codice
    }
    
    protected function findMany($query)
    {
      // qui ci sarà del codice
    }
  }
?>

Come puoi vedere, nel costruttore della classe effettuiamo la connessione al database. C'è, tuttavia, un problema: ogni modello creato (se all'interno di una singola azione del controller ci sono più modelli) effettuerà la propria connessione al database, e questo non è ottimale.

Facciamo in modo che la connessione al database venga creata solo per il primo modello creato, e che i modelli successivi utilizzino la connessione già creata. Per fare ciò, rendiamo la proprietà link statica:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // se la proprietà non è impostata, ci connettiamo
        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 il codice della classe Model fornito e posizionalo nel file /core/Model.php.

Задание 2

Implementa il metodo findOne in questa classe. Verifica il suo funzionamento.

Задание 3

Implementa il metodo findMany in questa classe. Verifica il suo funzionamento.