Implementering av förälder till alla modeller

Låt oss implementera föräldraklassen för alla modeller:

/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)
    {
      // här kommer att finnas någon kod
    }
    
    protected function findMany($query)
    {
      // här kommer att finnas någon kod
    }
  }
?>

Som du kan se, i klassens konstruktor genomför vi anslutning till databasen. Det finns dock ett problem: varje skapad modell (om inuti en kontrolleråtgärd kommer att finnas flera modeller) kommer att göra sin egen anslutning till databasen, och det är inte optimalt.

Låt oss göra så att anslutning till databasen endast skapas för den första skapade modellen, och de andra modellerna använde den redan skapade anslutningen. För att göra detta, egenskapen link gör vi statisk:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // om egenskapen inte är satt, så ansluter vi
        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

Kopiera den medföljande koden för klassen Model och placera den i filen /core/Model.php.

Задание 2

Implementera metoden findOne i denna klass. Testa dess funktion.

Задание 3

Implementera metoden findMany i denna klass. Testa dess funktion.