erreur class Autoloader

Par AaFrederic Husson, il y a 8 ans


Bonjour j'ai créé une class autoloader mais je rencontre une erreur sur cette ligne:

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

Warning: strpos() expects parameter 3 to be long, string given in C:\wamp64\www\blog\app\Autoloader.php on line 24

voici mon Autoloader.php

<?php namespace App; /** * Class Autoloader * @param App */ class Autoloader { /** * Enregistre notre autoloader */ static function register() { spl_autoload_register(array(__CLASS__, 'autoload')); } /** * Inclus 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'; } } }

4 réponses

keulu, il y a 8 ans

si j'en crois la doc PHP (et je la crois), le strpos ne s'ecrit pas comme ca...

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) haystack La chaîne dans laquelle on doit chercher. needle Si needle n'est pas une chaîne, il est converti en entier, et utilisé comme caractère de code ASCII correspondant. offset Si spécifié, la recherche commencera à partir de ce nombre de caractères compté depuis le début de la chaîne. Si ce nombre est négatif, la recherche commencera en utilisant ce nombre de caractères mais en commençant par la fin de la chaîne.
AaFrederic Husson, il y a 8 ans

je suis le cours de grafikart et c'est bien comme ça qu'il le fait pourtant

keulu, il y a 8 ans

t'es sur de toi ? parce que si t'as une erreur, ca mettonnerai que ce soit comme ca qu'il l'ait fait...

c'est pas plutot comme ca ?

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

tu noteras la différences entre strpos($class, __NAMESPACE__,'\\') et strpos($class, __NAMESPACE__.'\\')

tu doit aussi avoir une erreur avec ton str_replace qui comprend 4 parametres au lieu de 3... la doc est ton ami :)

atttention aux '.' et aux ',' c'est pas du tout pareil...

AaFrederic Husson, il y a 8 ans

oui effectivement j'avais pas fait attention à cela

merci