Բոլոր մոդելների ծնողի իրականացումը

Եկեք իրականացնենք բոլոր մոդելների ծնողական դասը.

/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)
    {
      // այստեղ կլինի ինչ-որ կոդ
    }
    
    protected function findMany($query)
    {
      // այստեղ կլինի ինչ-որ կոդ
    }
  }
?>

Ինչպես տեսնում եք, դասի կոնստրուկտորում մենք իրականացնում ենք միացում տվյալների բազային։ Սակայն կա խնդիր. յուրաքանչյուր ստեղծված մոդել (եթե կոնտրոլերի մեկ գործողության ներսում կլինեն մի քանի մոդելներ) կկատարի իր միացումը տվյալների բազային, իսկ դա օպտիմալ չէ։

Եկեք անենք այնպես, որ միացում տվյալների բազային ստեղծվի միայն առաջին ստեղծված մոդելի համար, իսկ մնացած մոդելներն օգտագործեն արդեն ստեղծված միացումը։ Դրա համար link հատկությունը դարձնենք ստատիկ.

/core/Model.php<?php
  namespace Core;
  
  class Model
  {
    private static $link;
    
    public function __construct()
    {
      if (!self::$link) { // եթե հատկությունը չի սահմանված, ապա միանում ենք
        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 դասի կոդը և տեղադրեք այն /core/Model.php ֆայլում։

Задание 2

Իրականացրեք findOne մեթոդը այս դասում։ Ստուգեք դրա աշխատանքը։

Задание 3

Իրականացրեք findMany մեթոդը այս դասում։ Ստուգեք դրա աշխատանքը։