Implementacija starša vseh modelov v lastnem MVC ogrodju

Implementirajmo nadrejeni razred vseh modelov:

/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)
    {
      // tukaj bo nekaj kode
    }
    
    protected function findMany($query)
    {
      // tukaj bo nekaj kode
    }
  }
?>

Kot lahko vidite, v konstruktorju razreda vzpostavimo povezavo z bazo podatkov. Obstaja pa težava: vsak ustvarjen model (če znotraj enega samega dejanja krmilnika bo več modelov) bo naredil svojo povezavo z bazo podatkov, kar ni optimalno.

Naredimo tako, da se povezava z bazo ustvari samo za prvi ustvarjeni model, preostali modeli pa uporabljajo že ustvarjeno povezavo. Za to lastnost link naredimo statično:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // če lastnost ni nastavljena, se povežemo
        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

Kopirajte prikazano kodo razreda Model in jo namestite v datoteko /core/Model.php.

Задание 2

Implementirajte metodo findOne v tem razredu. Preverite njeno delovanje.

Задание 3

Implementirajte metodo findMany v tem razredu. Preverite njeno delovanje.