spl_autoload_register не видит переменные

wrun

Новичок
Доброе время суток!

Наткнулся на проблему:
Автоматически присоединяю классы при помощи spl_autoload_register
файл incs/boot.inc:

PHP:
<?php
$GLB = array(1,2,3);
// Auto load class files
spl_autoload_register('AutoLoadClass');
function AutoLoadClass($className) {
  $FileName = PATH . 'incs/' . strtolower($className) . '.inc';
	if(file_exists($FileName))
		include_once $FileName;
 }
?>

а в фале index.php:

PHP:
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/incs/boot.inc';
$db = new MySQL();
print_r($GLB); // <-- Place 1
?>

а в фале incs/mysql.php:

PHP:
<?php
print_r($GLB); // <-- Place 2
class MySQL {
...


Так вот в Place 2 ошибка:
Notice: Undefined variable: GLB in /var/www/***/data/www/***/incs/mysql.inc on line 2

Почему так? ведь вроде оба файла (boot.inc и mysql.inc) преинклюжены к index.php?
 

С.

Продвинутый новичок
Почему так? ведь вроде оба файла (boot.inc и mysql.inc) преинклюжены к index.php?
Они не просто преинклюжены в index.php, а внутрь функции AutoLoadClass(). Тогда как переменная определена снаружи. Дальше понятно?
 

Gremboloid

инженера Гр...
все правильно, подключение происходит в AutoLoadClass, а в ней нет $GLB
Пиши
PHP:
function AutoLoadClass($className) {
  global $GLB;
  $FileName = PATH . 'incs/' . strtolower($className) . '.inc';
    if(file_exists($FileName))
        include_once $FileName;
 }
но это плохой тон
 
Сверху