Implementacija roditelja svih modela u sopstvenom MVC frejmvoru
Hajde da implementiramo roditeljsku klasu svih modela:
<?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)
{
// ovde će biti neki kod
}
protected function findMany($query)
{
// ovde će biti neki kod
}
}
?>
Kao što vidite, u konstruktoru klase obavljamo povezivanje na bazu podataka. Međutim, postoji problem: svaki kreirani model (ako unutar jedne akcije kontrolera bude nekoliko modela) će napraviti svoju konekciju na bazu podataka, a to nije optimalno.
Hajde da uradimo tako da se konekcija na
bazu kreira samo za prvi napravljeni
model, a ostali modeli koriste već
postojeću konekciju. Da bismo to uradili, svojstvo
link ćemo napraviti statičkim:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // ako svojstvo nije postavljeno, onda se povezujemo
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)
{
}
}
?>
Kopirajte dat kod klase Model
i smestite ga u fajl /core/Model.php.
Implementirajte metodu findOne u ovoj klasi.
Proverite njen rad.
Implementirajte metodu findMany u ovoj klasi.
Proverite njen rad.