Имплементация на родител на всички модели
Нека да реализираме родителския клас на всички модели:
<?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 в този клас.
Проверете неговата работа.