Implementering av foreldre til alle modeller i din egen MVC-rammeverk

La oss implementere foreldreklassen for alle 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)
    {
      // her vil det være noe kode
    }
    
    protected function findMany($query)
    {
      // her vil det være noe kode
    }
  }
?>

Som du kan se, i konstruktøren til klassen etablerer vi tilkobling til databasen. Det er imidlertid et problem: hver opprettet modell (hvis innenfor en enkelt kontrollerhandling vil det være flere modeller) vil opprette sin egen tilkobling til databasen, og dette er ikke optimalt.

La oss gjøre det slik at tilkobling til databasen kun opprettes for den første opprettede modellen, og de andre modellene bruker den allerede opprettede tilkoblingen. For å gjøre dette, la oss gjøre egenskapen link statisk:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // hvis egenskapen ikke er satt, kobler vi til
        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

Kopier den gitte koden for klassen Model og plasser den i filen /core/Model.php.

Задание 2

Implementer metoden findOne i denne klassen. Test dens funksjon.

Задание 3

Implementer metoden findMany i denne klassen. Test dens funksjon.