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

19 réponses


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");

JowRick
Auteur

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

Bonjour,
Tu peux montrer a quoi ressemble un de tes models que tu charges.

Oui, comme exothermique a dit, passe nous le code de tes models.

JowRick
Auteur

bah pour l'insatnt il ne fait rien et il n'a aucune fonction

mon model Post

<?php
class Post extends Model
{

}

Ok, et dans ta fonction loadModel(), le fichier Model Post est bien chargé?

JowRick
Auteur

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.

JowRick
Auteur

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

c'est normale, ton code n'est pas encore complet. :)

JowRick
Auteur

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

Passe moi ton includes.php

JowRick
Auteur

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';

il faut que l'inclusion du Model.php soit avant Controller.php.

JowRick
Auteur

je t'ai montré le code actuel de mon Includes.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';
JowRick
Auteur

toujours rien

Même problème exactement ... C'est bien chiant :(

Avez-vous trouvez la solution ?