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
Réponse acceptée

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...

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.

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

oui effectivement j'avais pas fait attention à cela

merci