锟斤拷锟斤拷远锟斤拷锟斤拷锟�

锟节憋拷写锟斤拷锟斤拷锟斤拷锟絆OP锟斤拷 锟斤拷锟斤拷时锟斤拷锟杰多开锟斤拷锟斤拷为每锟斤拷锟斤拷锟铰斤拷一锟斤拷 PHP 锟侥硷拷锟斤拷 锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟秸o拷每锟斤拷锟脚憋拷锟侥匡拷头锟斤拷锟斤拷锟斤拷要锟斤拷锟斤拷锟斤拷include锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟叫憋拷每锟斤拷锟洁都锟叫革拷锟侥硷拷锟斤拷锟斤拷

锟斤拷 PHP 5 锟叫o拷锟窖撅拷锟斤拷锟斤拷锟斤拷要锟斤拷锟斤拷锟剿★拷 spl_autoload_register() 锟斤拷锟斤拷锟斤拷锟斤拷注锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟皆讹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷使锟斤拷锟斤拷未锟斤拷锟斤拷锟斤拷锟斤拷啵╟lass锟斤拷锟酵接口o拷interface锟斤拷时锟皆讹拷去锟斤拷锟截★拷通锟斤拷注锟斤拷锟皆讹拷锟斤拷锟斤拷锟斤拷锟斤拷锟脚憋拷锟斤拷锟斤拷锟斤拷 PHP 锟斤拷锟斤拷失锟斤拷前锟斤拷锟斤拷锟斤拷锟揭伙拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷唷�

Tip

锟斤拷锟斤拷 __autoload() 锟斤拷锟斤拷也锟斤拷锟皆讹拷锟斤拷锟斤拷锟斤拷徒涌冢锟斤拷锟斤拷锟斤拷锟斤拷锟绞癸拷锟� spl_autoload_register() 锟斤拷锟斤拷锟斤拷 spl_autoload_register() 锟结供锟斤拷一锟街革拷锟斤拷锟斤拷锟侥凤拷式锟斤拷实锟斤拷锟斤拷锟斤拷远锟斤拷锟斤拷兀锟酵伙拷锟接︼拷锟斤拷校锟斤拷锟斤拷锟街э拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷募锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟叫的o拷锟斤拷锟斤拷耍锟斤拷锟斤拷俳锟斤拷锟绞癸拷锟� __autoload() 锟斤拷锟斤拷锟斤拷锟斤拷锟皆猴拷陌姹撅拷锟斤拷锟斤拷锟斤拷鼙锟斤拷锟斤拷谩锟�

Note:

锟斤拷 PHP 5.3 之前锟斤拷__autoload 锟斤拷锟斤拷锟阶筹拷锟斤拷锟届常锟斤拷锟杰憋拷 catch 锟斤拷锟介捕锟今并会导锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷Fatal Error锟斤拷锟斤拷 锟斤拷 PHP 5.3 锟斤拷锟杰癸拷 thrown 锟皆讹拷锟斤拷锟斤拷斐o拷锟紼xception锟斤拷锟斤拷锟斤拷锟斤拷远锟斤拷锟斤拷斐o拷嗉达拷锟绞癸拷谩锟� __autoload 锟斤拷锟斤拷锟斤拷锟皆递癸拷锟斤拷远锟斤拷锟斤拷锟斤拷远锟斤拷锟斤拷斐o拷唷�

Note:

锟皆讹拷锟斤拷锟截诧拷锟斤拷锟斤拷锟斤拷 PHP 锟斤拷 CLI 锟斤拷锟斤拷模式锟斤拷

Note:

锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷绫伙拷锟斤拷锟� call_user_func()锟斤拷锟斤拷锟斤拷锟斤拷锟杰帮拷锟斤拷一些危锟秸碉拷锟街凤拷锟斤拷锟斤拷锟斤拷 ../锟斤拷 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟侥猴拷锟斤拷锟叫诧拷要使锟斤拷锟矫伙拷锟斤拷锟斤拷锟诫,锟斤拷锟斤拷锟斤拷要锟斤拷 __autoload() 时锟斤拷证锟斤拷锟斤拷锟诫。

Example #1 锟皆讹拷锟斤拷锟斤拷示锟斤拷

锟斤拷锟斤拷锟斤拷锟皆分憋拷锟� MyClass1.php 锟斤拷 MyClass2.php 锟侥硷拷锟叫硷拷锟斤拷 MyClass1 锟斤拷 MyClass2 锟洁。

<?php
spl_autoload_register
(function ($class_name) {
    require_once 
$class_name '.php';
});

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

Example #2 锟斤拷一锟斤拷锟斤拷锟斤拷

锟斤拷锟斤拷锟斤拷锟皆硷拷锟截接匡拷 ITest锟斤拷

<?php

spl_autoload_register
(function ($name) {
    
var_dump($name);
});

class 
Foo implements ITest {
}

/*
string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...
*/
?>

Example #3 锟皆讹拷锟斤拷锟斤拷锟斤拷 PHP 5.3.0+ 锟叫碉拷锟届常锟斤拷锟斤拷

锟斤拷锟斤拷锟阶筹拷一锟斤拷锟届常锟斤拷锟斤拷 try/catch 锟斤拷锟斤拷锟斤拷锟斤拷示锟斤拷

<?php
spl_autoload_register
(function ($name) {
    echo 
"Want to load $name.\n";
    throw new 
Exception("Unable to load $name.");
});

try {
    
$obj = new NonLoadableClass();
} catch (
Exception $e) {
    echo 
$e->getMessage(), "\n";
}
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

Want to load NonLoadableClass.
Unable to load NonLoadableClass.

Example #4 锟皆讹拷锟斤拷锟斤拷锟斤拷 PHP 5.3.0+ 锟叫碉拷锟届常锟斤拷锟斤拷 - 没锟斤拷锟皆讹拷锟斤拷锟届常锟斤拷锟斤拷

锟斤拷锟斤拷锟斤拷一锟斤拷锟届常锟阶革拷锟斤拷锟斤拷锟节碉拷锟皆讹拷锟斤拷锟届常锟斤拷锟斤拷锟斤拷锟斤拷

<?php
spl_autoload_register
(function ($name) {
    echo 
"Want to load $name.\n";
    throw new 
MissingException("Unable to load $name.");
});

try {
    
$obj = new NonLoadableClass();
} catch (
Exception $e) {
    echo 
$e->getMessage(), "\n";
}
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

Want to load NonLoadableClass.
Want to load MissingException.

Fatal error: Class 'MissingException' not found in testMissingException.php on line 4