colaphp框架的类分析(一)
来源:互联网 发布:万方数据库论文查重 编辑:程序博客网 时间:2024/06/16 23:38
colaphp框架的类分析(一)
入口类Cola![这里写图片描述](http://img.blog.csdn.net/20161207173443441?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FiaW5nMjAwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
属性分析
$_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(
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,实例化Router2 获取配置里面_urls数组和router实例里面的rules合并3 获取pathInfo,然后去router里面匹配4 加载对应的controller文件和对象,调用对应的方法
dispathch最后的结构是类似这一种的哦
[dispatchInfo] => Array ( [controller] => IndexController [action] => indexAction )
setConfig和getconfig主要是调用config对象的方法
setReg(
setClassPath 往配置里面加入加载路径
setDispatchInfo 设置变量
factory实例化一个类,当然咱们也可以直接不用factory实例化,
我觉得这个地方可以再加个是否setReg的配置,复用这个类,恩,在代码里面已调整
public static function factory($type, $config) { $adapter = $config['adapter']; $class = $type . '_' . ucfirst($adapter); return new $class($config); }
0 0
- colaphp框架的类分析(一)
- colaphp框架的分析
- colaphp框架的类分析(二)
- colaphp框架的类分析(三)
- colaphp框架的模块简单说明
- spark 框架分析 (一)
- spring.net 框架分析(一)对象的创建
- ffmpeg的HEVC解码源代码分析(一)整体框架
- ORM框架分析之DB到Entity的映射(一)
- soot代码分析框架的基础知识(一)
- OGRE框架分析(一)
- Yii PHP 框架分析 (一)
- Yii PHP 框架分析 (一)
- skynet框架 源码分析 一
- min3d框架源码分析(一)
- Yii PHP 框架分析 (一)
- Yii PHP 框架分析 (一)
- 【Struts2框架】(一)原理分析
- MyBatis的动态SQL详解
- hdu2709Sumsets
- SSL 1411 最小函数值_优先队列
- Tomcat自动部署 不用每次运行啦!!!
- 快速幂
- colaphp框架的类分析(一)
- sqlite查到找db文件
- C#时间日期格式
- Java之super关键字
- 文字图片混排页面框架(仿新闻图文混排页面)
- Pycharm破解版 Pycharm2016注册码
- 表单序列化后的数据转换成json格式
- linux 解压 .gz .bz2 .zip .rar .tar
- colaphp框架的类分析(二)