php - hvorfor er denne \_\_autoload give mig e\_notice advarsel, når du bruger en defineret konstant?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg får af en eller anden grund denne meddelelse i koden, min ansøgning virker fint, og det påvirker ikke resten af ​​koden på nogen måde. Men jeg kan ikke pakke mit hoved omkring denne ene besked. Jeg kan ikke se nogen fejl i min kode. Jeg bruger også \_ROOT global konstant på andre steder, og det giver mig ingen besked om, at det er udefineret. Interessant vurderer if (defined('\_ROOT')) til sandt som det skulle være, da det selvfølgelig er helt sikkert defineret.


Kode:


<?php

session\_start();

//define('\_DEBUG', 'YES');
define('\_ROOT', dirname(\_\_FILE\_\_), true);

require\_once \_ROOT.'/config/config.php'; //no notice

function \_\_autoload($class\_name) {
   if (defined('\_DEBUG')) { echo '\_\_autoload called<br>'; }
   if (defined('\_ROOT')) { echo 'root exists'.\_ROOT.'<br>'; } //doesn't give me a notice
   if (file\_exists(\_ROOT.'/app/core/'.$class\_name.'.php')) { //gives me a notice
      require\_once \_ROOT.'/app/core/'.$class\_name.'.php'; //doesn't give me a notice
   }
}

$app = new Application();
echo $app->run();


Bemærk: Notice: Use of undefined constant \_ROOT - assumed '\_ROOT' in path oindex.php on line 13

Bedste reference


Det er indlysende: \_ROOT er ikke defineret i øjeblikket \_\_autoload() kaldes (bemærk at dette kan være meget tidligt i udførelsen af ​​dit script).


if (defined('\_ROOT')) { echo 'root exists'.\_ROOT.'<br>'; }


giver dig ikke besked, fordi koden inden for if aldrig udføres, når \_ROOT ikke er defineret.