Имплементација родитеља свих модела у сопственом MVC оквиру
Хајде да имплементирамо родитељску класу свих модела:
<?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)
{
// овде ће бити неки код
}
protected function findMany($query)
{
// овде ће бити неки код
}
}
?>
Као што видите, у конструктору класе обављамо повезивање са базом података. Постоји, међутим, проблем: сваки креирани модел (ако унутар једне акције контролера буде више модела) ће правити своје повезивање са базом података, а то није оптимално.
Хајде да урадимо тако да се повезивање са
базом креира само за први креирани
модел, а да остали модели користе већ
створено повезивање. За то ћемо својство
link направити статичким:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // ако својство није задато, онда се повезујемо
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)
{
}
}
?>
Копирајте наведени код класе Model
и поставите га у фајлу /core/Model.php.
Имплементирајте метод findOne у овој класи.
Проверите његов рад.
Имплементирајте метод findMany у овој класи.
Проверите његов рад.