cola框架 php,cola-php框架的类分析(一)

cola-php框架的类分析(一)

入口类Cola

eb31d125dca2d9a811c3d0809f1929d3.png

cola%E7%B1%BB%E7%9A%84%E7%BB%93%E6%9E%84.png

属性分析

$_instance 单例模式,持有cola对象

$reg 存储变量和对象

$config 配置对象

$router 路由对象

$pathinfo 存储路由的路径

$dispatchInfo 存储需要加载的控制器和方法

构造方法

1 注册默认需要的类

2 加载自动加载方法

//初始化配置类

$this->config = new Cola_Config(array(

'_class' => array(

'Cola_Model' => COLA_DIR . '/Model.php',

'Cola_View' => COLA_DIR . '/View.php',

'Cola_Controller' => COLA_DIR . '/Controller.php',

'Cola_Router' => COLA_DIR . '/Router.php',

'Cola_Request' => COLA_DIR . '/Request.php',

'Cola_Response' => COLA_DIR . '/Response.php',

'Cola_Ext_Validate' => COLA_DIR . '/Ext/Validate.php',

'Cola_Exception' => COLA_DIR . '/Exception.php',

'Cola_Exception_Dispatch' => COLA_DIR . '/Exception/Dispatch.php',

),

));

Cola::registerAutoload();

自动加载方法loadClass(className,classFile = ”),支持按照文件和方法查找

1 看是否已经存在

2 classFile不存在,在默认的类中查找

3 如果类名字中有Cola 去掉它。例如Cola_Ext_Http类

去掉Cola把_替换成\ xxx\Ext\Http文件

4 然后需要配置 model controller 加载对应的类

其实代码需要指定对应的controller,model,view,widget路径

'_modelsHome' => APP_PATH.DIRECTORY_SEPARATOR.'model',

'_controllersHome' => APP_PATH.DIRECTORY_SEPARATOR.'controller',

'_viewsHome' => APP_PATH.DIRECTORY_SEPARATOR.'view',

'_widgetsHome' => APP_PATH.DIRECTORY_SEPARATOR.'widget'

入口代码是这么写的

//分发 CONFIG_PATH 配置路径

$cola->boot(CONFIG_PATH)->dispatch();

boot(CONFIG_PATH) 主要是加载配置文件合并配置。下面我们讲到config类的时候会做一个说明

初始化cola对象,boot配置后,我们会有一个dispatch,这个时候我们主要考虑的是加载对应的controller和action

getDispatchInfo方法是获取dispathch的

1 如果不存在dispatchInfo,实例化Router

2 获取配置里面_urls数组和router实例里面的rules合并

3 获取pathInfo,然后去router里面匹配

4 加载对应的controller文件和对象,调用对应的方法

dispathch最后的结构是类似这一种的哦

[dispatchInfo] => Array

(

[controller] => IndexController

[action] => indexAction

)

setConfig和getconfig主要是调用config对象的方法

setReg(name,obj) 注册对象或者参数

setClassPath 往配置里面加入加载路径

setDispatchInfo 设置变量

factory实例化一个类,当然咱们也可以直接不用factory实例化,

我觉得这个地方可以再加个是否setReg的配置,复用这个类,恩,在代码里面已调整

public static function factory($type, $config) {

$adapter = $config['adapter'];

$class = $type . '_' . ucfirst($adapter);

return new $class($config);

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值