Az összes modell szülőjének implementációja
Implementáljuk az összes modell szülőosztályát:
<?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)
{
// itt lesz valami kód
}
protected function findMany($query)
{
// itt lesz valami kód
}
}
?>
Amint látod, az osztály konstruktorában adatbázis kapcsolatot hozunk létre. Van azonban egy probléma: minden létrehozott modell (ha egy kontroller műveleten belül több modell is lesz) saját kapcsolatot fog létesíteni az adatbázissal, ami nem optimális.
Tegyük úgy, hogy az adatbázis kapcsolat
csak az első létrehozott modellhez jöjjön létre,
a többi modell pedig a már létrehozott kapcsolatot használja. Ehhez a
link tulajdonságot statikussá tesszük:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // ha a tulajdonság nincs beállítva, akkor csatlakozunk
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)
{
}
}
?>
Másold az adott Model osztály kódját
és helyezd el a /core/Model.php fájlban.
Implementáld a findOne metódust ebben az osztályban.
Ellenőrizd a működését.
Implementáld a findMany metódust ebben az osztályban.
Ellenőrizd a működését.