Рэалізацыя бацькі ўсіх мадэляў у сваім 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 у гэтым класе.
Праверце яго працу.