Implementación del padre de todos los modelos
Implementemos la clase padre de todos los modelos:
<?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)
{
// aquí habrá algún código
}
protected function findMany($query)
{
// aquí habrá algún código
}
}
?>
Como puedes ver, en el constructor de la clase realizamos la conexión a la base de datos. Sin embargo, existe un problema: cada modelo creado (si dentro de una misma acción del controlador hay varios modelos) hará su propia conexión a la base de datos, y esto no es óptimo.
Hagamos que la conexión a la base de datos
se cree solo para el primer modelo creado,
y que los demás modelos utilicen la conexión
ya creada. Para ello, hagamos la propiedad
link estática:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // si la propiedad no está definida, nos conectamos
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 el código de la clase Model proporcionado
y colócalo en el archivo /core/Model.php.
Implementa el método findOne en esta clase.
Comprueba su funcionamiento.
Implementa el método findMany en esta clase.
Comprueba su funcionamiento.