Implementatie van de ouder van alle modellen in je eigen MVC-framework
Laten we de bovenliggende klasse van alle modellen implementeren:
<?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)
{
// hier komt code
}
protected function findMany($query)
{
// hier komt code
}
}
?>
Zoals je ziet, maken we in de constructor van de klasse verbinding met de database. Er is echter een probleem: elk aangemaakt model (als er binnen één controlleractie meerdere modellen zijn) maakt zijn eigen verbinding met de database, en dat is niet optimaal.
Laten we het zo maken dat de verbinding met
de database alleen wordt gemaakt voor het eerste aangemaakte
model, en de andere modellen de reeds
gemaakte verbinding gebruiken. Hiervoor maken we de eigenschap
link statisch:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // als de eigenschap niet is ingesteld, verbinden we
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)
{
}
}
?>
Kopieer de gegeven code van klasse Model
en plaats deze in bestand /core/Model.php.
Implementeer de methode findOne in deze klasse.
Test de werking ervan.
Implementeer de methode findMany in deze klasse.
Test de werking ervan.