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 许可协议。转载请注明出处!