Implementacja rodzica wszystkich modeli we własnym frameworku MVC
Zaimplementujmy nadrzędną klasę wszystkich modeli:
<?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)
{
// tutaj będzie jakiś kod
}
protected function findMany($query)
{
// tutaj będzie jakiś kod
}
}
?>
Jak widzicie, w konstruktorze klasy realizujemy połączenie z bazą danych. Jest jednak problem: każdy tworzony model (jeśli w ramach jednego działania kontrolera będzie kilka modeli) będzie wykonywać własne połączenie z bazą danych, a to nie jest optymalne.
Zróbmy tak, aby połączenie z
bazą tworzyło się tylko dla pierwszego utworzonego
modelu, a pozostałe modele wykorzystywały już
utworzone połączenie. W tym celu właściwość
link zróbmy statyczną:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // jeśli właściwość nie jest ustawiona, to łączymy się
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)
{
}
}
?>
Skopiujcie podany kod klasy Model
i umieśćcie go w pliku /core/Model.php.
Zaimplementuj metodę findOne w tej klasie.
Sprawdź jej działanie.
Zaimplementuj metodę findMany w tej klasie.
Sprawdź jej działanie.