ყველა მოდელის მშობლის რეალიზაცია საკუთარ MVC ფრეიმვორკში
მოდით განვახორციელოთ ყველა მოდელის მშობელი კლასი:
<?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 გავხადოთ სტატიკური:
<?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)
{
}
}
?>
დააკოპირეთ მოცემული კოდი კლასის Model
და განათავსეთ იგი ფაილში /core/Model.php.
რეალიზაცია გაუკეთეთ მეთოდს findOne ამ კლასში.
შეამოწმეთ მისი მუშაობა.
რეალიზაცია გაუკეთეთ მეთოდს findMany ამ კლასში.
შეამოწმეთ მისი მუშაობა.