Implementazione del genitore di tutti i modelli
Implementiamo la classe genitore di tutti i modelli:
<?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)
{
// qui ci sarà del codice
}
protected function findMany($query)
{
// qui ci sarà del codice
}
}
?>
Come puoi vedere, nel costruttore della classe effettuiamo la connessione al database. C'è, tuttavia, un problema: ogni modello creato (se all'interno di una singola azione del controller ci sono più modelli) effettuerà la propria connessione al database, e questo non è ottimale.
Facciamo in modo che la connessione al
database venga creata solo per il primo modello
creato, e che i modelli successivi utilizzino la connessione
già creata. Per fare ciò, rendiamo la proprietà
link statica:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // se la proprietà non è impostata, ci connettiamo
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)
{
}
}
?>
Copia il codice della classe Model fornito
e posizionalo nel file /core/Model.php.
Implementa il metodo findOne in questa classe.
Verifica il suo funzionamento.
Implementa il metodo findMany in questa classe.
Verifica il suo funzionamento.