我的密码
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
我遇到致命错误:未捕获的错误:在...中找不到类'Person'。
spl_autoload_register
的执行顺序是什么?
PS:
PHP 7.1