Implementacija starša vseh modelov v lastnem MVC ogrodju
Implementirajmo nadrejeni razred vseh modelov:
<?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)
{
// tukaj bo nekaj kode
}
protected function findMany($query)
{
// tukaj bo nekaj kode
}
}
?>
Kot lahko vidite, v konstruktorju razreda vzpostavimo povezavo z bazo podatkov. Obstaja pa težava: vsak ustvarjen model (če znotraj enega samega dejanja krmilnika bo več modelov) bo naredil svojo povezavo z bazo podatkov, kar ni optimalno.
Naredimo tako, da se povezava z
bazo ustvari samo za prvi ustvarjeni
model, preostali modeli pa uporabljajo že
ustvarjeno povezavo. Za to lastnost
link naredimo statično:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // če lastnost ni nastavljena, se povežemo
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 prikazano kodo razreda Model
in jo namestite v datoteko /core/Model.php.
Implementirajte metodo findOne v tem razredu.
Preverite njeno delovanje.
Implementirajte metodo findMany v tem razredu.
Preverite njeno delovanje.