类加载器
优质
小牛编辑
135浏览
2023-12-01
框架中所有的类都是通过类加载器(ClassLoader)加载的,通过Loader我们可以实现类的统一管理。下面我们一起来看看Loader
提供了哪些加载方法:
1. Loader::import
加载一个类或者加载一个包
方法原型 import( $classPath, $type = IMPORT_APP, $extension=EXT_PHP )
参数名称 | 参数说明 |
---|---|
$classPath | 文件的路径,格式:user.service.UserService , 很显然这个路径是指包路径,也是相对路径,如果这样写 user.service.* 表示加载 service 目录下的所有类。 |
$type | 导入了类包的类别, 为框架常量,有3个取值, IMPORT_APP => 以app/modules为根目录; IMPORT_CLIENT => 以app/client为根目录; IMPORT_FRAME => 加载框架中的class文件(以framework/herosphp为根目录); IMPORT_CUSTOM => 加载自定义路径中的class文件(以 ) |
$extension | 文件名后缀名,EXT_PHP => .class.php; EXT_MODEL => .model.php; EXT_HTML => .html; EXT_CONFIG => .config.php |
Loader::import('cache.ACache', IMPORT_FRAME);
Loader::import('cache.interfaces.ICache', IMPORT_FRAME);
2. Loader::__include
包含一个文件,并返回该文件的内容, 用法和Loader::import()一样。只不过有返回包含文件的内容。
3. Loader::config
加载一个配置文档,配置文档的后缀都要是 .config.php
。
方法原型 config($key='*', $section=null)
参数名称 | 参数说明 |
---|---|
$key | 配置文件名称key, 如果没有指定则加载指定的目录下的所有配置文档 |
$section | (格式:beans.user) 配置文档所属片区(模块), 这个目录是 app/configs 目录的相对的子目录 |
$appConfigs = Loader::config('app'); //加载 app/configs/app.config.php
$beans = Loader::config('*', 'beans'); //加载app/configs/beans目录下的所有的配置文档
4. Loader::model()
加载一个数据模型(Model)
方法原型 model( $modelName )
参数名称 | 参数说明 |
---|---|
$modelName | 模型名称(带命名空间) |
@return | 返回一个 MysqlModel 对象 |
$model = Loader::model(UserDao::class); //加载User模型
5. Loader::service()
加载一个服务
方法原型 service( $serviceName )
参数名称 | 参数说明 |
---|---|
$serviceName | 服务名称(带命名空间) |
@return | 返回一个 CommonService |
$model = Loader::service(UserService::class); //加载UserService
二次开发
请查阅 herosphp\core\Loader
framework/herosphp/core/Loader.class.php