Implementierung des Elternmodells aller Modelle
Lassen Sie uns die Elternklasse aller Modelle implementieren:
<?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 wird etwas Code stehen
}
protected function findMany($query)
{
// hier wird etwas Code stehen
}
}
?>
Wie Sie sehen, stellen wir im Konstruktor der Klasse die Verbindung zur Datenbank her. Es gibt jedoch ein Problem: Jedes erstellte Modell (wenn innerhalb einer Controller-Aktion mehrere Modelle vorhanden sind) wird eine eigene Verbindung zur Datenbank herstellen, was nicht optimal ist.
Lassen Sie uns dies so ändern, dass die Verbindung zur
Datenbank nur für das erste erstellte Modell hergestellt
wird und die restlichen Modelle die bereits erstellte
Verbindung verwenden. Dazu machen wir die Eigenschaft
link statisch:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // wenn Eigenschaft nicht gesetzt, dann verbinden
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)
{
}
}
?>
Kopieren Sie den angegebenen Code der Klasse Model
und platzieren Sie ihn in der Datei /core/Model.php.
Implementieren Sie die Methode findOne in dieser Klasse.
Testen Sie ihre Funktion.
Implementieren Sie die Methode findMany in dieser Klasse.
Testen Sie ihre Funktion.