আপনার নিজস্ব MVC ফ্রেমওয়ার্কে সমস্ত মডেলের প্যারেন্ট বাস্তবায়ন

চলুন সমস্ত মডেলের প্যারেন্ট ক্লাস বাস্তবায়ন করি:

/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 মেথডটি বাস্তবায়ন করুন। এর কাজ পরীক্ষা করুন।