Implementace rodiče všech modelů ve vlastním MVC frameworku
Pojďme implementovat rodičovskou třídu všech 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)
{
// tady bude nějaký kód
}
protected function findMany($query)
{
// tady bude nějaký kód
}
}
?>
Jak vidíte, v konstruktoru třídy provádíme připojení k databázi. Existuje však problém: každý vytvořený model (pokud uvnitř jedné akce kontroleru bude několik modelů) vytvoří své vlastní připojení k databázi, což není optimální.
Udělejme to tak, aby připojení k
databázi bylo vytvořeno pouze pro první vytvořený
model a ostatní modely používaly již
vytvořené připojení. K tomu uděláme vlastnost
link statickou:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // pokud vlastnost není nastavena, připojíme se
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)
{
}
}
?>
Zkopírujte uvedený kód třídy Model
a umístěte jej do souboru /core/Model.php.
Implementujte metodu findOne v této třídě.
Vyzkoušejte její funkčnost.
Implementujte metodu findMany v této třídě.
Vyzkoušejte její funkčnost.