Υλοποίηση του γονέα όλων των μοντέλων στο δικό σας MVC framework
Ας υλοποιήσουμε την γονική κλάση όλων των μοντέλων:
<?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)
{
// εδώ θα υπάρχει κάποιος κώδικας
}
}
?>
Όπως βλέπετε, στον κατασκευαστή της κλάσης πραγματοποιούμε σύνδεση στη βάση δεδομένων. Υπάρχει, ωστόσο, πρόβλημα: κάθε μοντέλο που δημιουργείται (αν μέσα σε μία ενέργεια του ελεγκτή θα υπάρχουν πολλά μοντέλα) θα κάνει τη δική του σύνδεση στη βάση δεδομένων, κάτι που δεν είναι βέλτιστο.
Ας κάνουμε έτσι ώστε η σύνδεση στη
βάση να δημιουργείται μόνο για το πρώτο δημιουργημένο
μοντέλο, και τα υπόλοιπα μοντέλα να χρησιμοποιούν την ήδη
δημιουργημένη σύνδεση. Για αυτό την ιδιότητα
link θα την κάνουμε στατική:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // αν η ιδιότητα δεν έχει οριστεί, τότε συνδεόμαστε
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)
{
}
}
?>
Αντιγράψτε τον παραπάνω κώδικα της κλάσης Model
και τοποθετήστε τον στο αρχείο /core/Model.php.
Υλοποιήστε την μέθοδο findOne σε αυτή την κλάση.
Ελέγξτε τη λειτουργία της.
Υλοποιήστε την μέθοδο findMany σε αυτή την κλάση.
Ελέγξτε τη λειτουργία της.