Bonjour,
Je suis bloqué au chapitre 12 de la formation, je tourne en rond depuis plusieurs heures et je suis au bord du découragement.
mon arborescence est :
www/open/app/autoloader.php
www/open/public/index.php

j'ai une erreur dans mon navigateur :
Warning: require(D:\wamp64\www\open\app/.php): failed to open stream: No such file or directory in D:\wamp64\www\open\app\autoloader.php on line 23

Voilà mon index.php

<?php
require '../app/autoloader.php';

App\Autoloader::register();

if (isset($_GET['p'])){
    $p = $_GET['p'];
}
else {
    $p = 'home';
}

// INITIALISATION DES OBJETS :
$db = new App\Database('xxxxxxxx');

ob_start(); // Permet de mettre dans la variable content la page à afficher pour ne pas avoir à réécrire les head ...
if ($p === 'home'){
    require '../pages/home.php';
}

elseif ($p === 'single'){
    require '../pages/single.php';
}
$content = ob_get_clean();
require '../pages/template/default.php';
?>

Et mon autoloader.php

<?php
namespace App;
/**
 * Class Autoloader
 */
class Autoloader{

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

    /**
     * Inclue le fichier correspondant à notre classe
     * @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';
        }
    }

}
?>

Avez-vous une idée ?

5 réponses


Je ne sais pas si l'auteur suis encore ce topic, mais remplace 0 par null à cette ligne :

if (strpos($class, __NAMESPACE__.'\\') === 0){

la ligne suivante me parait suspecte

$class = str_replace(__NAMESPACE__, '\\', '', $class);

le 4em argument est censé être un count mais là il y a $class !!!

Oui, sans doute:

$class = str_replace(__NAMESPACE__.'\\', '', $class);

( . au lieu de , )

;-)...

Salut

remplace : $class = str_replace(NAMESPACE, '\', '', $class); par

$class = str_replace(NAMESPACE . '\', '', $class);

Après NAMESPACE tu as mis une virgule lieu d'un point.

Alain

N'oublie pas les doubles '\'
$class = str_replace(NAMESPACE . '\'\, '', $class);