Visu modeļu vecāka implementācija savā MVC ietvarā
Implementēsim visu modeļu vecāka klasi:
<?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)
{
// šeit būs kāds kods
}
protected function findMany($query)
{
// šeit būs kāds kods
}
}
?>
Kā jūs redzat, klases konstruktorā mēs veicam savienojumu ar datu bāzi. Tomēr ir problēma: katrs izveidotais modelis (ja viena kontroliera darbībā būs vairāki modeļi) veiks savu savienojumu ar datu bāzi, un tas nav optimāli.
Padarīsim tā, lai savienojums ar
datu bāzi tiktu izveidots tikai pirmajam izveidotajam
modelim, bet pārējie modeļi izmantotu jau
izveidoto savienojumu. Lai to izdarītu, īpašību
link padarīsim par statisku:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // ja īpašība nav iestatīta, tad savienojamies
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)
{
}
}
?>
Nokopējiet doto klases Model kodu
un ievietojiet to failā /core/Model.php.
Implementējiet metodi findOne šajā klasē.
Pārbaudiet tās darbību.
Implementējiet metodi findMany šajā klasē.
Pārbaudiet tās darbību.