Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je suis actuellement le tuto sur le PHP OO, et je rencontre un problème lors de la création de la classe Database.

Voici mon fichier Autoloader.php :

class Autoloader
{

    static function register(){
        spl_autoload_register(array(__CLASS__, 'autoload'));
    }

    static function autoload($nomClass){
        if (strpos($nomClass, __NAMESPACE__ . '\\') === 0){
            $nomClass = str_replace(__NAMESPACE__.'\\', '', $nomClass);
            $nomClass = str_replace('\\', '/', $nomClass);
            require './'.__DIR__.'/' . $nomClass . '.php';  // <----   Ligne 22
        }
    }
}

Ce que je veux

J'ai beau revenir en arrière dans la vidéo, je ne comprends pas ce qui bloque , d'autant que je ne suis pas vraiment à l'aise avec les fonctions utilisées dans lautoloader ... Ceci dit l'erreur vient probablement d'un "./" en trop, comme on peut voir dans le message : ".//Application..." Il y a 2 slashs ^^
Je voudrais juste que ça marche, càd aucune erreur.

Ce que j'obtiens

J'ai TOUT (il me semble) fait comme sur la vidéo, sauf que j'ai les erreurs suivantes :
Warning: require(.//Applications/MAMP/www_localhost/Blog/app/Database.php): failed to open stream: No such file or directory in /Applications/MAMP/www_localhost/Blog/app/Autoloader.php on line 22

Fatal error: require(): Failed opening required './/Applications/MAMP/www_localhost/Blog/app/Database.php' (include_path='.:/Applications/MAMP/bin/php/php5.6.10/lib/php') in /Applications/MAMP/www_localhost/Blog/app/Autoloader.php on line 22

4 réponses


Huggy
Réponse acceptée

le DIR contient déjà un slash 'racine', il ne faut pas le rajouter
de plus DIR renvoie un chemin absolu, donc il ne faut pas partir du répertoire courant '.'
essaye

require __DIR__.'/' . $nomClass . '.php';  // <----   Ligne 22
Emilien Ramos
Auteur
Réponse acceptée

Salut ! Merci beaucoup, il me semble pourtant avoir suivi exactement le tuto .. ^^ Maintenant j'ai une autre erreur :
Parse error: syntax error, unexpected '__construct' (T_STRING), expecting variable (T_VARIABLE) in /Applications/MAMP/www_localhost/Blog/app/Database.php on line 15

namespace App;

use \PDO;

class Database{

    private $db_name;
    private $db_user;
    private $db_pass;
    private $db_host;
    private $pdo;

    public __construct($dbname, $dbuser = 'root', $dbpass='root', $dbhost='localhost'){ // <--- Ligne 15
        $this->db_name = $dbname;
        $this->db_user = $dbuser;
        $this->db_pass = $dbpass;
        $this->db_host = $dbhost;
    }

Je n'ai pas mit le reste du code (getPDO et query($statement))

Une idée ? :)

mrdus
Réponse acceptée

salut
public function peut etre ? ;)

Ah p.tain ... Sans déconner j'ai pas fait attention ^^ Désolé :p
Merci beaucoup en tout cas ! :D