Visu modeļu vecāka implementācija savā MVC ietvarā

Implementēsim visu modeļu vecāka klasi:

/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)
    {
      // šeit būs kāds kods
    }
    
    protected function findMany($query)
    {
      // šeit būs kāds kods
    }
  }
?>

Kā jūs redzat, klases konstruktorā mēs veicam savienojumu ar datu bāzi. Tomēr ir problēma: katrs izveidotais modelis (ja viena kontroliera darbībā būs vairāki modeļi) veiks savu savienojumu ar datu bāzi, un tas nav optimāli.

Padarīsim tā, lai savienojums ar datu bāzi tiktu izveidots tikai pirmajam izveidotajam modelim, bet pārējie modeļi izmantotu jau izveidoto savienojumu. Lai to izdarītu, īpašību link padarīsim par statisku:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // ja īpašība nav iestatīta, tad savienojamies
        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

Nokopējiet doto klases Model kodu un ievietojiet to failā /core/Model.php.

Задание 2

Implementējiet metodi findOne šajā klasē. Pārbaudiet tās darbību.

Задание 3

Implementējiet metodi findMany šajā klasē. Pārbaudiet tās darbību.