Bonjour,

Voila je rencontre un petit problème avec mon code. j'ai essayé de trouvé le souci en vain.. j'ai dû raté quelque chose alors svp si quelqu'un voit ce que j'ai raté qu'il me fasse signe . merci

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire
Table.php

<?php

use Core\Config;
use Core\Database\MysqlDatabase;

class App
{

    public $title = "Mon super site";
    private static $_instance;
    private $db_instance;

    public static function getInstance(){
        if(is_null(self::$_instance)){
            self::$_instance = new App();
        }
        return self::$_instance;
    }

    public static function load(){
        session_start();
        require ROOT .'/App/Autoloader.php';
        App\Autoloader::register();
        require ROOT . '/Core/Autoloader.php';
        Core\Autoloader::register();
    }

    public function getTable($name){
        $class_name = '\\App\\Table\\' . ucfirst($name) . 'Table';
        return new $class_name($this->getDb());
    }

    public function getDb(){
        $config = Config::getInstance(ROOT . '/config/config.php');
        if(is_null($this->db_instance)){
            $this->db_instance = new MysqlDatabase($config->get('db_name'),$config->get('db_user'),$config->get('db_pass'),$config->get('db_host'));
        }
        return $this->db_instance;
    }

}

Autoloader.php
~~

<?php

namespace Core;

Class Autoloader{

/**
 * Enregistre notre autoloader
 */
static function register() {
    spl_autoload_register(array(__CLASS__,'autoload'));
}

/**
 * Inclure le fichier correspondant à notre classex  /
 * require 'autoloader.php'; Autoloader::register(); --> permet de lancer notre autoloader simplement.
 * @param $class string le nom de la classe à charger
 */

static function autoload($class){
    if(strpos($class,__NAMESPACE__. '\\') == 0){
        $class = str_replace(__NAMESPACE__ . '\\','',$class);
        $class = str_replace('\\','/', $class);
        require __DIR__ . '/' . $class. '.php';

    }

}

}

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Warning: require(C:\xampp\htdocs\BLOG\App/core/Table.php): failed to open stream: No such file or directory in C:\xampp\htdocs\BLOG\App\Autoloader.php on line 25

Fatal error: require(): Failed opening required 'C:\xampp\htdocs\BLOG\App/core/Table.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\BLOG\App\Autoloader.php on line 25

3 réponses


bonjour, bonsoir

je te conseille d'utiliser la constance 'DIRECTORY_SEPARATOR' pour éviter le problème de slash.

dans ton erreur a la fin du chemin du fichier ne sont pas les mêmes.

a quoi correspond la constante

Angem
Auteur

Merci Coockie_hunty pour ta réponse, mais ce code est issu du tuto la POO en PHP alors j'aimerai comprendre pourquoi est ce que j'ai cette erreur afin de la corriger..
cdt.

ton erreur vient du fait que dans ta directory tu a deux type de slache.

de plus linux utilise les séparateur / et Windows \ ou le contraire mais souvenir son Flou.

si tu utilises my\dir sur Windows sa ne fonctionnera pas. il vaut utiliser my/dir

la constante DIRECTORY_SEPARATOR te met le bon séparateur. suivant sur qu'elle os ou le code et exécuté