Visų modelių tėvinės klasės implementacija
Leiskite implementuoti visų modelių tėvinę klasę:
<?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)
{
// čia bus kažkoks kodas
}
protected function findMany($query)
{
// čia bus kažkoks kodas
}
}
?>
Kaip matote, klasės konstruktoriuje mes atliekame prisijungimą prie duomenų bazės. Tačiau yra problema: kiekvienas sukurtas modelis (jei vieno kontrolerio veiksmo viduje bus keli modeliai) atliks savo prisijungimą prie duomenų bazės, o tai nėra optimalu.
Padarykime taip, kad prisijungimas prie
duomenų bazės būtų sukurtas tik pirmam sukurtam
modeliui, o likę modeliai naudotų jau
sukurtą prisijungimą. Tam padarykime savybę
link statine:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // jei savybė nenustatyta, tada jungiamės
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)
{
}
}
?>
Nukopijuokite pateiktą klasės Model kodą
ir patalpinkite jį faile /core/Model.php.
Implementuokite metodą findOne šioje klasėje.
Patikrinkite jo veikimą.
Implementuokite metodą findMany šioje klasėje.
Patikrinkite jo veikimą.