Az összes modell szülőjének implementációja

Implementáljuk az összes modell szülőosztályát:

/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)
    {
      // itt lesz valami kód
    }
    
    protected function findMany($query)
    {
      // itt lesz valami kód
    }
  }
?>

Amint látod, az osztály konstruktorában adatbázis kapcsolatot hozunk létre. Van azonban egy probléma: minden létrehozott modell (ha egy kontroller műveleten belül több modell is lesz) saját kapcsolatot fog létesíteni az adatbázissal, ami nem optimális.

Tegyük úgy, hogy az adatbázis kapcsolat csak az első létrehozott modellhez jöjjön létre, a többi modell pedig a már létrehozott kapcsolatot használja. Ehhez a link tulajdonságot statikussá tesszük:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // ha a tulajdonság nincs beállítva, akkor csatlakozunk
        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

Másold az adott Model osztály kódját és helyezd el a /core/Model.php fájlban.

Задание 2

Implementáld a findOne metódust ebben az osztályban. Ellenőrizd a működését.

Задание 3

Implementáld a findMany metódust ebben az osztályban. Ellenőrizd a működését.