Kõigi mudelite ülemklassi realiseerimine
Loome kõigi mudelite ülemklassi:
<?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)
{
// siin on mingi kood
}
protected function findMany($query)
{
// siin on mingi kood
}
}
?>
Nagu näete, teostame klassi konstruktoris andmebaasi ühenduse. Siiski on probleem: iga loodud mudel (kui ühes kontrolleri tegevuses on mitu mudelit) teeb oma ühenduse andmebaasi, mis pole optimaalne.
Teeme nii, et andmebaasi ühendus
luuakse ainult esimese loodud
mudeli jaoks, ning ülejäänud mudelid kasutaksid juba
loodud ühendust. Selleks muudame omaduse
link staatiliseks:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // kui omadus pole määratud, siis ühendume
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)
{
}
}
?>
Kopeerige toodud klassi Model kood
ja asetage see faili /core/Model.php.
Realiseerige meetod findOne selles klassis.
Kontrollige selle toimimist.
Realiseerige meetod findMany selles klassis.
Kontrollige selle toimimist.