PHPдегин 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 методунун ишке ашырыңыз. Анын иштешин текшериңиз.