Implementarea părintelui tuturor modelelor în propriul framework MVC
Să implementăm clasa părinte a tuturor modelelor:
<?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)
{
// aici va fi un cod
}
protected function findMany($query)
{
// aici va fi un cod
}
}
?>
După cum vedeți, în constructorul clasei realizăm conexiunea la baza de date. Există, totuși, o problemă: fiecare model creat (dacă în interiorul unei acțiuni a controllerului vor fi mai multe modele) va face propria conexiune la baza de date, iar acest lucru nu este optim.
Să facem astfel încât conexiunea la
baza de date să fie creată doar pentru primul model creat
și restul modelelor să utilizeze conexiunea deja
creată. Pentru aceasta, proprietatea
link o vom face statică:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // dacă proprietatea nu este setată, atunci ne conectăm
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)
{
}
}
?>
Copiați codul clasei Model
și plasați-l în fișierul /core/Model.php.
Implementați metoda findOne în această clasă.
Verificați funcționarea ei.
Implementați metoda findMany în această clasă.
Verificați funcționarea ei.