spl_autoload_register
(PHP 5 >= 5.1.2, PHP 7)
spl_autoload_register — 注册给定的函数作为 __autoload 的实现
语法
bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )
说明
通过这个函数,可以为加载的类指定寻址方式,这样就不用大批量地 require 和 include 了。系统会自动按照指定的规则,到对应的位置下面去寻找需要实例化的类。虽然这个方法比较底层,在有框架的情况下,一般都不需要我们去做这些工作了。但是难免还是有要用的时候,比如我写这个博客的时候,我就自己需要捣腾脚本,这个时候,就绕不开了。下面的例子,就是我的脚本中要用的一个简单的自动加载的程序。
例子
spl_autoload_register(function ($class) { $rootPath = realpath(sprintf('%s/..', __DIR__)); $paths = array( 'src', ); foreach ($paths as $path) { if (is_file( $file = $rootPath . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . $class . '.php' )) { include $file; break; } } });
注意,匿名函数是 PHP 5.3 及以上 才可以用的,如果发现不能用,检查一下自己的 PHP 版本。我这里只是简单地指定所有的类在我的 src 文件夹下寻找,类名与文件名完全一致。
以上就是笔记019 通过 spl_autoload_register 实现自动加载的内容,更多相关内容请关注PHP中文网(www.php.cn)!