Barcha modellar uchun ota-klassni amalga oshirish
Keling, barcha modellar uchun ota-klassni yaratamiz:
<?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)
{
// bu yerda qandaydir kod bo'ladi
}
protected function findMany($query)
{
// bu yerda qandaydir kod bo'ladi
}
}
?>
Ko'rib turganingizdek, klass konstruktorida biz ma'lumotlar bazasiga ulanishni amalga oshiramiz. Biroq, muammo shundaki: har bir yaratilgan model (agar kontrollerning bir harakatida bir nechta modellar bo'lsa) o'zining ma'lumotlar bazasiga ulanishini yaratadi va bu optimal emas.
Keling, shunday qilaylikki, ma'lumotlar bazasiga
ulanish faqat birinchi yaratilgan model uchun
yaratilsin, qolgan modellar esa allaqachon
yaratilgan ulanishdan foydalansin. Buning uchun
link xususiyatini statik qilamiz:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // agar xususiyat belgilanmagan bo'lsa, ulanamiz
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 klassining keltirilgan kodini nusxalang
va uni /core/Model.php faylida joylashtiring.
Ushbu klassda findOne metodini amalga oshiring.
Uning ishlashini tekshiring.
Ushbu klassda findMany metodini amalga oshiring.
Uning ishlashini tekshiring.