Partage
  • Partager sur Facebook
  • Partager sur Twitter

Notice en PHP Erreur

Sujet résolu
23 avril 2017 à 16:04:27

Bonjour, je commence le PHP objet et en activant les erreurs j'en ai découvert une que je n'arrive pas a résoudre

Je cherche a créer une class autoloader de class php. Ma classe fonctionne bien sauf qu’elle m’affiche cette erreur …

Notice: Use of undefined constant autoload - assumed 'autoload' in /Users/florianpasquereau/Sites/essai/App/Autoload.php on line 15

je ne comprends pas pourquoi, cette fonction existe juste au-dessus…

Voici le code :

class Autoload
{
    static function autoload(string $class_name)
    {
        if (strpos($class_name, __NAMESPACE__."\\") === 0)
        {
            $class_name = str_replace(__NAMESPACE__."\\", "", $class_name);
            $class_name = str_replace('\\', '/', $class_name);
            require(__DIR__."/".$class_name.".php");
        }
    }

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

Pouvez-vous m'aider svp ? :)

Merci a vous

Ps: 

Voici le code de l'index.php

require_once("../App/Autoload.php");
Autoload::register();




-
Edité par Azuraul 23 avril 2017 à 16:06:50

  • Partager sur Facebook
  • Partager sur Twitter
23 avril 2017 à 17:13:07

Puff loool sérieux... :waw:

Merci Julp

  • Partager sur Facebook
  • Partager sur Twitter
23 avril 2017 à 17:32:06

En tant que callback, tu ne désignes pas une fonction (ou méthode par extension) par son nom mais par une chaîne de caractères contenant son nom. Ici, comme on le voit au message d'erreur, avec simplement autoload, PHP cherche une constante non une fonction/méthode comme tu t'y attendais j'imagine et ton code fonctionnait quand même car PHP transforme automatiquement (après l'émission d'une notice Use of undefined constant) les constantes inexistantes en une chaîne de caractères (autoload, constante qui n'existe pas, a été réinterprétée comme 'autoload', la chaîne de caractères).

Note : ce comportement transformant une constante inexistante en une chaîne de caractères évoluera

-
Edité par julp 23 avril 2017 à 17:35:06

  • Partager sur Facebook
  • Partager sur Twitter