Kaikkien mallien yläluokan toteutus
Luodaan kaikkien mallien yläluokka:
<?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)
{
// tässä on tuleva jotain koodia
}
protected function findMany($query)
{
// tässä on tuleva jotain koodia
}
}
?>
Kuten näette, luokan konstruktorissa muodostamme yhteyden tietokantaan. On kuitenkin ongelma: jokainen luotava malli (jos yhden kontrollerin toiminnossa on useita malleja) muodostaa oman yhteydensä tietokantaan, mikä ei ole optimaalista.
Tehdään niin, että tietokantayhteys
luodaan vain ensimmäiselle luodulle
mallille, ja muut mallit käyttävät jo
luotua yhteyttä. Tehdään tätä varten ominaisuus
link staattiseksi:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // jos ominaisuutta ei ole asetettu, niin yhdistetään
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)
{
}
}
?>
Kopioi esitetty koodi luokasta Model
ja sijoita se tiedostoon /core/Model.php.
Toteuta metodi findOne tässä luokassa.
Testaa sen toimintaa.
Toteuta metodi findMany tässä luokassa.
Testaa sen toimintaa.