InitPHP开源框架load函数分析

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函数的重要性:

  1. 框架内容和框架运行分离。InitPHP框架里面的6个模块都是独立的类文件,每个类文件之间没有耦合关系,后期需要添加扩展类,都可以直接在相应的文件夹下添加即可,这样避免了框架的运行部分和框架的内容部分的混杂。
  2. 简化框架接口调用。框架所有内容都是通过这个函数出去的,需要获取框架的接口,就得走这个函数。保证了框架出去口子的一致性。
  3. 单例模式,不会运行多次。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值