Implementering af forælder til alle modeller
Lad os implementere forældreklassen 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)
{
// der vil være en kode her
}
protected function findMany($query)
{
// der vil være en kode her
}
}
?>
Som du kan se, opretter vi forbindelse til databasen i klassens konstruktør. Der er dog et problem: hver oprettet model (hvis der er flere modeller inden for en enkelt controller-handling) vil oprette sin egen forbindelse til databasen, hvilket ikke er optimalt.
Lad os gøre det sådan, at forbindelsen til
databasen kun oprettes for den første oprettede
model, og de resterende modeller bruger den allerede
oprettede forbindelse. For at gøre dette, lad os gøre egenskaben
link statisk:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // hvis egenskaben ikke er indstillet, opretter vi forbindelse
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 givne kode for klassen Model
og placer den i filen /core/Model.php.
Implementer metoden findOne i denne klasse.
Test dens funktion.
Implementer metoden findMany i denne klasse.
Test dens funktion.