php实现自动加载方式集合
在一些php常规方法加载有使用到include,include_once,requice,requice_one方法,但是当载入的文件太多的时候,这个就会引起一些不必要的麻烦,所以我们要使用到自动加载的方法。
一些例子实现,我写到了附件中,可以下载查看
spl_autoload_register()
官网建议使用该方法来实现,该方法可以灵活实现载入功能。可以多次调用,所以可以解决一些不同编写规则、类名规则等问题。
方法一:
/**
* spl_autoload_register()自动加载 代码
* www.jianbaizhan.com 编写
* spl_autoload_register可以多次调用,所以可以解决一些不同的类库规范问题(目录不同、文件命名不同等)
*/
define('LIB_PATH',__DIR__.'/Library/');//定义类库的目录
function my_autoload($class){
$file = LIB_PATH.$class.'.php';
if(is_file($file)) {
require_once($file);
}
}
spl_autoload_register('my_autoload');
spl_autoload_register(function($class){// 自 PHP 5.3.0 起可以使用一个匿名函数
$file = LIB_PATH.'Test/'.$class.'.php';
if(is_file($file)) {
require_once($file);
}
});
$a = new A();
$b = new C();方法二:
/**
* spl_autoload_register()自动加载 代码
* www.jianbaizhan.com 编写
* spl_autoload_register可以多次调用,所以可以解决一些不同的类库规范问题(目录不同、文件命名不同等)
* 通过一个类来定义多个加载方法规则
*/
define('LIB_PATH',__DIR__.'/Library/');//定义类库的目录
class Loader {
public static function my_autoload_one($class){
$file = LIB_PATH.$class.'.php';
if(is_file($file)) {
require_once($file);
}
}
public static function my_autoload_two($class){
$file = LIB_PATH.'Test/'.$class.'.php';
if(is_file($file)) {
require_once($file);
}
}
}
// 自 PHP 5.3.0 起可以使用
spl_autoload_register(array('Loader', 'my_autoload_one'));
spl_autoload_register(array('Loader', 'my_autoload_two'));
$a = new A();
$b = new C();__autoload()
只能定义一次该方法
官方Tip spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载。因此,不再建议使用 __autoload() 函数,在以后的版本中它可能被弃用。
/**
* __autoload()自动加载 代码
* www.jianbaizhan.com 编写
* 建百站提示你 该方法官方文档已不再建议使用,在以后的版本中它可能被弃用。 建议使用spl_autoload_register()
*/
define('LIB_PATH',__DIR__.'/Library/');//定义类库的目录
function __autoload($class){
$file = LIB_PATH.$class.'.php';
if(is_file($file)) {
require_once($file);
}
}
$a = new A();
$b = new B();本文作者: Liaodeity
本文链接: https://www.jianbaizhan.com/article/385
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!