Implementimi i prindit të të gjitha modeleve në MVC framework-un tuaj
Le të implementojmë klasën prind të të gjitha modeleve:
<?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)
{
// këtu do të ketë një kod
}
protected function findMany($query)
{
// këtu do të ketë një kod
}
}
?>
Siç e shihni, në konstruktorin e klasës ne kryejmë lidhjen me bazën e të dhënave. Megjithatë, ekziston një problem: çdo model i krijuar (nëse brenda një veprimi të kontrolluesit do të ketë disa modele) do të bëjë lidhjen e vet me bazën e të dhënave, dhe kjo nuk është optimale.
Le ta bëjmë në mënyrë që lidhja me
bazën e të dhënave të krijohet vetëm për modelin e parë të krijuar,
dhe modelet e tjera të përdorin lidhjen tashmë
të krijuar. Për këtë, vetinë
link do ta bëjmë statike:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // nëse vetia nuk është caktuar, atëherë lidhemi
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)
{
}
}
?>
Kopjoni kodin e dhënë të klasës Model
dhe vendoseni atë në skedarin /core/Model.php.
Implementoni metodën findOne në këtë klasë.
Kontrolloni funksionimin e saj.
Implementoni metodën findMany në këtë klasë.
Kontrolloni funksionimin e saj.