Мои коды
spl_autoload.php
<?php
function autoload_in_dir($class_name, $dir)
{
echo "autoload in " . $dir . " classname: " . $class_name . "\n";
$class_path = $dir . $class_name . '.class.php';
if (file_exists($class_path)) {
require_once $class_path;
} else {
echo 'class file' . $class_path . 'not found!';
}
}
function autoload_in_current_dir($class_name)
{
autoload_in_dir($class_name, "./");
}
spl_autoload_register('autoload_in_current_dir');
$person = new Person("Yi", 28); // 1
var_dump($person); // 2
spl_autoload_unregister("autoload_in_current_dir");
$person = new Person("Yifan", 28);
var_dump($person);
Вывод:
autoload in ./ classname: Person
object(Person)#1 (2) {
["name"]=>
string(2) "Yi"
["age"]=>
int(28)
}
object(Person)#2 (2) {
["name"]=>
string(5) "Yifan"
["age"]=>
int(28)
}
Все нормально, но я незарегистрирован.Почему я могу создать объект после spl_autoload_unregister
?
, но если удалить следующую строку:
$person = new Person("Yi", 28); // 1
var_dump($person); // 2
Я получаю фатальную ошибку: Uncaught Error: класс «Person» не найденin ...
Каков порядок выполнения spl_autoload_register
?
PS:
PHP 7.1