function __autoload() 尝试加载未定义的类;
test.php
<?php
function __autoload($name)
{
require($name.'.php');
echo 'CLASS '.$name.' NOT EXIST!';
}
$a = new A();
A.php
<?php
class A
{
public function __construct()
{
echo "This is A. ";
}
}
执行test.php文件时, 由于没有找到"class A" 会优先调用__autoload方法。
spl_autoload_register() - 注册给定的函数作为 __autoload 的实现
语法:spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool
autoloadDemo.php
<?php
spl_autoload_register('myAutoLoad', true, true);
function myAutoload($className)
{
echo "所以包含文件都交给我\r\n";
$classFileName = "./{$className}.php";
echo "我来包含{$classFileName}\r\n";
include "./{$className}.php";
}
$objDemo = new AutoloadClass();
autoloadClass.php
<?php
class AutoloadClass
{
public function __construct()
{
echo "已包括";
}
}
执行 autoloadDemo.php 文件, 会调用myAutoLoad方法,这个被spl_autoload_register注册的方法,只接收一个对象参数。