企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 2.2 类自动加载 ~~~ 1. 在启动文件中新建一个load()方法 2. 举例:新建一个路由类 3. spl_autoload_register 注册给定的函数作为` __autoload` 的实现 4. 自动加载实现 5. 启动框架 ~~~ ### 1. 在启动文件中新建一个`load()`方法 * * * * * *D:\wamp\www\web.com\core\thinkphp.php* ~~~ // 自由加载类库 static public function load($class) { // } ~~~ ### 2. 举例:新建一个路由类 *D:\wamp\www\web.com\core\route.php* ~~~ <?php namespace core; class route { public function __construct() { echo "路由初始化成功"; } } ~~~ ### 3. `spl_autoload_register` 注册给定的函数作为` __autoload` 的实现 [spl_autoload_register](http://php.net/manual/zh/function.spl-autoload-register.php) 注册给定的函数作为 __autoload 的实现 ~~~ //class 未能加载的 spl_autoload_register() <?php namespace Foobar; class Foo { static public function test($name) { print '[['. $name .']]'; } } spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // 自 PHP 5.3.0 起 new InexistentClass; ?> ~~~ ### 4. 自动加载实现 ~~~ static public function load($class) { if (isset($classMap[$class])) { return true; } else { // p($class); $class = str_replace('\\', '/', $class); $file = THINKPHP . '/' . $class . '.php'; // p($file); if (is_file($file)) { include $file; self::$classMap[$class] = $class; } else { return false; } } } ~~~ ### 5. 启动框架 *D:\wamp\www\web.com\index.php* ~~~ ...... // 实现自动加载 spl_autoload_register('\core\thinkphp::load'); \core\thinkphp::run(); ~~~ ### 效果 ![](https://box.kancloud.cn/3da3f3a0cbe303ae7d4665c03ebd633b_952x607.png)