Implementering av förälder till alla modeller
Låt oss implementera föräldraklassen för alla modeller:
<?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)
{
// här kommer att finnas någon kod
}
protected function findMany($query)
{
// här kommer att finnas någon kod
}
}
?>
Som du kan se, i klassens konstruktor genomför vi anslutning till databasen. Det finns dock ett problem: varje skapad modell (om inuti en kontrolleråtgärd kommer att finnas flera modeller) kommer att göra sin egen anslutning till databasen, och det är inte optimalt.
Låt oss göra så att anslutning till
databasen endast skapas för den första skapade
modellen, och de andra modellerna använde den redan
skapade anslutningen. För att göra detta, egenskapen
link gör vi statisk:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // om egenskapen inte är satt, så ansluter vi
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)
{
}
}
?>
Kopiera den medföljande koden för klassen Model
och placera den i filen /core/Model.php.
Implementera metoden findOne i denna klass.
Testa dess funktion.
Implementera metoden findMany i denna klass.
Testa dess funktion.