InitPHP开源框架整个框架都是一个巨大的类库,通过一个load函数,实现了框架与外界框架运行和应用程序使用框架接口的通道。
$this->load() 函数存放在core/core.init.php文件夹下。代码示例:
private static $instance = array(); private $init_path = array( 'd' => '/core/dao/', //DAO层 's' => '/core/service/', //service层 'c' => '/core/controller/', //controller层 'v' => '/core/view/', //view层 'u' => '/core/util/', //核心工具 'l' => '/library/', //扩展类库 ); /** * 系统自动加载InitPHP类库 * * @param string $class_name 类名称 * @param string $type 类所属类型 * @return object */ public function load($class_name, $type) { $class_path = $this->get_class_path($class_name, $type); $class_name = $this->get_class_name($class_name); $class_path = INITPHP_PATH . $class_path; if (!file_exists($class_path)) exit('file '. $class_name . '.php is not exist!'); if (!isset(self::$instance[$class_name])) { require_once($class_path); if (!class_exists($class_name)) exit('class' . $class_name . ' is not exist!'); $init_class = new $class_name; self::$instance[$class_name] = $init_class; } return self::$instance[$class_name]; }
InitPHP主要分层两大部分,6小模块内容:1. 系统架构类:
core/dao 数据层
core/service 服务层
core/controller 控制器
core/view 视图层
2. 系统类库:
core/util 工具类
library 扩展类
这么多类,都是通过$this->load() 这个函数类获取的。
load函数有2个参数,一个是classname,一个是type,类的名称和类型,这样可以区分需要调用的是框架哪部分的类。
load函数是单例模式,类只会实例化一次,所以不必担心你前面是否已经调用过该类。
load函数的重要性:
- 框架内容和框架运行分离。InitPHP框架里面的6个模块都是独立的类文件,每个类文件之间没有耦合关系,后期需要添加扩展类,都可以直接在相应的文件夹下添加即可,这样避免了框架的运行部分和框架的内容部分的混杂。
- 简化框架接口调用。框架所有内容都是通过这个函数出去的,需要获取框架的接口,就得走这个函数。保证了框架出去口子的一致性。
- 单例模式,不会运行多次。
InitPHP开源框架load函数分析
最新推荐文章于 2019-08-10 18:25:45 发布