Pelaksanaan Induk Semua Model dalam Kerangka MVC Sendiri
Mari kita laksanakan 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 kod di sini
}
protected function findMany($query)
{
// akan ada beberapa kod di sini
}
}
?>
Seperti yang anda lihat, dalam pembina kelas kami membuat sambungan ke pangkalan data. Walau bagaimanapun, terdapat masalah: setiap model yang dibuat (jika dalam satu tindakan pengawal terdapat beberapa model) akan membuat sambungannya sendiri ke pangkalan data, dan ini tidak optimum.
Mari kita buat supaya sambungan ke
pangkalan data dibuat hanya untuk model pertama
yang dibuat, dan model lain menggunakan
sambungan yang sudah dibuat. Untuk ini, sifat
link kita jadikan statik:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // jika sifat tidak ditetapkan, maka sambung
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 kod kelas Model yang diberikan
dan letakkannya dalam fail /core/Model.php.
Laksanakan kaedah findOne dalam kelas ini.
Uji kerjanya.
Laksanakan kaedah findMany dalam kelas ini.
Uji kerjanya.