Bonjour cela fait au moins deux heures que je cherche à comprendre pourquoi lorsque je fais des test dans la fonction constructrice de mon moi ceux-ci n’apparaissent pas, à faire de douter de mon code j'ai recommencé à créer ce système de model au moins un dizaine de fois. A ce stade là je commence à craquer mentalement.
Le code de ma fonction load Model
public function loadModel($name)
{
$file = SERVER.DS.'Models'.DS.$name.'.php';
require_once($file);
if (!isset($this->$name)) {
$this->$name = new $name();
}
}
Le code de mon model
class Model
{
public $db = 'default';
public function __construct()
{
$conf = Configurations::getConfigs('databases',$this->db);
try {
$db = new PDO('mysql:host='.$conf->host.';dbname='.$conf->database.';',$conf->login,$conf->password);
} catch (PDOException $e) {
die($e->getMessage());
}
}
}
pour l'instant je me suis arrêté ici car j'avais besoin d'une pause.
Edit : J'ai changé certaines constantes et ma classe Configurations est en lien avec un fichier en JSON
Salut,
il faut créer des sous models qui héritent des méthodes et des variables celles de la class mère Model. après tu peux utiliser la fonction loadModel("nom du model");
Je sais c'est déjà fait et c'est bien là le problème c'est comme si le sous model s'instanciait mais pas le model
bah pour l'insatnt il ne fait rien et il n'a aucune fonction
mon model Post
<?php
class Post extends Model
{
}
oui voici mon PagesController
class PagesController extends Controller
{
public function view($id)
{
$this->loadModel('Post');
}
}
C'est pas grave je vais recommencé tout mon projet
je crois que le model a bien chargé. et la connexion BDD est bien effectué le moment ou il n'a pas affiché aucune erreur.
pour tester, je te propose d'ajouter un
echo "Blabla";
dans ton constructeur de la class Model.
bah je l'avais déjà fait et ce c'est qui m'a mis la puce à l'oreille. De plus quand je fait
var_dump($this->table)
Dans le model il me retourne false et non 'posts' et vu que tout ce fait dans le constructeur je me suis dis qu'il y avais un problème
ah mais même après il ne fait rien ce n'est que quand je fais
parent::__construct()
dans mon model post que mes debugs s'affichent
bah c'est déjà inclus j'ai vérifié une dizaine de fois et j'ai changé la ligne d'inclusion du model pour voir et ça n'a rien changé
sinon mon Includes.php c'est ça
require 'Configurations.php';
require 'Request.php';
require 'Router.php';
require 'Controller.php';
require 'Model.php';
require 'Dispatcher.php';
Je sais.
remplace maintenant le code de ton includes.php avec ça
require 'Configurations.php';
require 'Request.php';
require 'Router.php';
require 'Model.php';
require 'Controller.php';
require 'Dispatcher.php';