Implémentation du parent de tous les modèles
Implémentons la classe parente de tous les modèles :
<?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)
{
// il y aura du code ici
}
protected function findMany($query)
{
// il y aura du code ici
}
}
?>
Comme vous le voyez, dans le constructeur de la classe, nous établissons la connexion à la base de données. Il y a, cependant, un problème : chaque modèle créé (si à l'intérieur d'une même action du contrôleur il y a plusieurs modèles) va établir sa propre connexion à la base de données, ce qui n'est pas optimal.
Faisons en sorte que la connexion à
la base soit établie uniquement pour le premier modèle créé,
et que les modèles suivants utilisent la connexion déjà
créée. Pour cela, rendons la propriété
link statique :
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // si la propriété n'est pas définie, alors on se connecte
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)
{
}
}
?>
Copiez le code donné de la classe Model
et placez-le dans le fichier /core/Model.php.
Implémentez la méthode findOne dans cette classe.
Testez son fonctionnement.
Implémentez la méthode findMany dans cette classe.
Testez son fonctionnement.