Имплементација на родител на сите модели во вашиот MVC framework
Да го имплементираме родителскиот клас на сите модели:
<?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 во оваа класа.
Проверете ја неговата работа.