Implementering av foreldre til alle modeller i din egen MVC-rammeverk
La oss implementere foreldreklassen for alle modeller:
<?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)
{
// her vil det være noe kode
}
protected function findMany($query)
{
// her vil det være noe kode
}
}
?>
Som du kan se, i konstruktøren til klassen etablerer vi tilkobling til databasen. Det er imidlertid et problem: hver opprettet modell (hvis innenfor en enkelt kontrollerhandling vil det være flere modeller) vil opprette sin egen tilkobling til databasen, og dette er ikke optimalt.
La oss gjøre det slik at tilkobling til
databasen kun opprettes for den første opprettede
modellen, og de andre modellene bruker den allerede
opprettede tilkoblingen. For å gjøre dette, la oss
gjøre egenskapen link statisk:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // hvis egenskapen ikke er satt, kobler vi til
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)
{
}
}
?>
Kopier den gitte koden for klassen Model
og plasser den i filen /core/Model.php.
Implementer metoden findOne i denne klassen.
Test dens funksjon.
Implementer metoden findMany i denne klassen.
Test dens funksjon.