Как использовать spl_autoload_register?

class Manage { spl_autoload_register(function($class) { include $class . '.class.php'; }); } 

Скажем, у меня есть такой код, как выше. Я решил использовать метод анонимной функции для загрузки классов, но как это используется? Как именно он определяет, какой '$class' загружать?

Вы не можете поставить код там. Вы должны добавить регистр SPL после своего класса. Если вы хотите зарегистрировать функцию внутри класса Manage вы могли бы сделать:

 class Manage { public static function autoload($class) { include $class . '.class.php'; } } spl_autoload_register(array('Manage', 'autoload')); 

Однако, как вы показали, вы можете использовать анонимную функцию. Вам даже не нужен класс, поэтому вы можете просто сделать:

 spl_autoload_register(function($class) { include $class . '.class.php'; }); 

В любом случае указанная функция добавляется в пул функций, которые отвечают за автозагрузку. Ваша функция добавляется в этот список (так что если бы они были в списке уже, ваш будет последним). С этим, когда вы делаете что-то вроде этого:

 UnloadedClass::someFunc('stuff'); 

PHP поймет, что UnloadedClass еще не объявлен. Затем он будет проходить через список функций автозагрузки SPL. Он будет вызывать каждую функцию одним аргументом: 'UnloadedClass' . Затем после вызова каждой функции он проверяет, существует ли класс. Если он не продолжается до тех пор, пока он не достигнет конца списка. Если класс никогда не загружается, вы получите фатальную ошибку, сообщающую, что класс не существует.

Как именно он определяет, какой «класс $» загружать?

Класс $class передается автоматически php. И это имя класса еще не объявлено, но используется где-то во время выполнения