Öz MVC çärjegiňizde ähli modelleriň ata-klasyny amala aşyrmak

Geliň, ähli modelleriň ata-klasyny amala aşyralyň:

/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)
    {
      // şu ýerde käbir kod bolar
    }
    
    protected function findMany($query)
    {
      // şu ýerde käbir kod bolar
    }
  }
?>

Görşüňiz ýaly, klasyň konstruktorunda biz mağlumatlar bazasyna birikdirmäni amala aşyrýarys. Emma, ýöne bir meselä bar: her döredilýän model (eger bir kontroler hereketi içinde birnäçe model bolsa) öz mağlumatlar bazasyna birikdirmesini eder, bu bolsa optimal däl.

Geliň, şeýle edeliň, mağlumatlar bazasyna birikdirme diňe birinji döredilen model üçin döredilsin, galan modeller bolsa eýýäm döredilen birikdirmäni ulanysyn. Bunuň üçin häsiýeti link statik edeliň:

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // eger häsiýet bellänmedik bolsa, onda birikdirýäris
        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

Model klasynyň getirilen koduny göçürip alyň we ony /core/Model.php faýlynda ýerleşdiriň.

Задание 2

Bu klasda findOne metodyny amala aşyryň. Onuň işini barlaň.

Задание 3

Bu klasda findMany metodyny amala aşyryň. Onuň işini barlaň.