Implementação do pai de todos os modelos
Vamos implementar a classe pai de todos os 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)
{
// тут будет какой-то код
}
protected function findMany($query)
{
// тут будет какой-то код
}
}
?>
Como você pode ver, no construtor da classe estamos realizando a conexão com o banco de dados. No entanto, existe um problema: cada modelo criado (se dentro de uma única ação do controlador houver vários modelos) fará sua própria conexão ao banco de dados, o que não é ideal.
Vamos fazer com que a conexão com o
banco de dados seja criada apenas para o primeiro modelo
criado, e os modelos subsequentes usem a conexão já
estabelecida. Para isso, vamos tornar a propriedade
link estática:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // se a propriedade não estiver definida, 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)
{
}
}
?>
Copie o código da classe Model fornecido
e coloque-o no arquivo /core/Model.php.
Implemente o método findOne nesta classe.
Verifique seu funcionamento.
Implemente o método findMany nesta classe.
Verifique seu funcionamento.