Bonjour,
Voila je rencontre un petit problème avec mon code.
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
}
}
}
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.
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
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
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 ? :)
Ah p.tain ... Sans déconner j'ai pas fait attention ^^ Désolé :p
Merci beaucoup en tout cas ! :D