理解自:http://www.cnblogs.com/myluke/archive/2011/06/25/2090119.html
__autoload的作用:當我們在一個頁面使用其他文件的類方法時候,經常使用的是require ,require_once ,include,include_once,
比如我們有data.php
<?php class Data { public static function delData() { var_dump('del data'); } }
當我們想在person.php中使用data.php的內容時,可以這樣
<?php
class Data {
public static function delData() {
var_dump('del data');
}
public static function catchData() {
echo '我就和你嘿嘿嘿';
}
}
但是,如果有100個界面時,我們還都要一個個的require_once進來嗎?
__autoload的作用就出來,當我們調用一個從未定義的類時,就會加載__autoload方法,你可以使用__autoload方法加載文件
比如.
auto.php
<?php function __autoload($className){ $className = $className.'.php'; if(is_file($className)){ require_once "$className"; } }
person.php
<?php require_once 'auto.php'; Data::delData();
那 spl_auto_register()有什么作用呢?
他可以加載自己寫的函數來覆蓋__autoload()函數
auto_register.php
<?php function load($className){ $fileName = $className.'.php'; if(is_file($fileName)){ require_once "$fileName"; } } spl_autoload_register('load');
person.php
<?php //require_once 'auto.php'; require_once 'spl_auto_register.php'; Data::delData(); Data::catchData();
輸出
string
'del data' (length=8)
我就和你嘿嘿嘿
