php 函数__autoload与spl_autoload_register理解
理解自: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)
我就和你嘿嘿嘿