Implementasi Induk Semua Model dalam Framework MVC Sendiri
Mari kita implementasikan kelas induk untuk semua model:
<?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)
{
// akan ada beberapa kode di sini
}
protected function findMany($query)
{
// akan ada beberapa kode di sini
}
}
?>
Seperti yang Anda lihat, dalam konstruktor kelas kita melakukan koneksi ke basis data. Namun, ada masalah: setiap model yang dibuat (jika dalam satu aksi controller terdapat beberapa model) akan membuat koneksinya sendiri ke basis data, dan ini tidak optimal.
Mari kita buat agar koneksi ke
basis data hanya dibuat untuk model pertama
yang dibuat, dan model lainnya menggunakan
koneksi yang sudah dibuat. Untuk itu, properti
link kita buat statis:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // jika properti belum diatur, maka lakukan koneksi
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)
{
}
}
?>
Salin kode kelas Model yang diberikan
dan tempatkan di file /core/Model.php.
Implementasikan metode findOne di kelas ini.
Uji kerjanya.
Implementasikan metode findMany di kelas ini.
Uji kerjanya.