Implementácia rodiča všetkých modelov vo vlastnom MVC frameworku
Poďme implementovať rodičovskú triedu všetkých modelov:
<?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)
{
// tu bude nejaký kód
}
protected function findMany($query)
{
// tu bude nejaký kód
}
}
?>
Ako vidíte, v konštruktore triedy vykonávame pripojenie k databáze. Existuje však problém: každý vytvorený model (ak v rámci jednej akcie kontrolera bude niekoľko modelov) vytvorí svoje vlastné pripojenie k databáze, čo nie je optimálne.
Urobme to tak, aby sa pripojenie k
databáze vytvorilo len pre prvý vytvorený
model a ostatné modely použili už
vytvorené pripojenie. Na to urobme vlastnosť
link statickou:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // ak vlastnosť nie je nastavená, tak sa pripojíme
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)
{
}
}
?>
Skopírujte uvedený kód triedy Model
a umiestnite ho do súboru /core/Model.php.
Implementujte metódu findOne v tejto triede.
Skontrolujte jej fungovanie.
Implementujte metódu findMany v tejto triede.
Skontrolujte jej fungovanie.