加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

小巧PHP框架cola的运行加载过程分析

发布时间:2023-01-30 14:00:52 所属栏目:PHP教程 来源:未知
导读: 因公司一项老业务交接给了我,最近开始看老业务的代码,代码使用的Cola框架,之前我也没用过。但框架都长那样,之前看过CI,laravel,也啃过一点YII,现在又有好久没有接触框架了,于是就想

因公司一项老业务交接给了我,最近开始看老业务的代码,代码使用的Cola框架,之前我也没用过。但框架都长那样,之前看过CI,laravel,也啃过一点YII,现在又有好久没有接触框架了,于是就想简单看一下这个框架的运行过程。话不多说,开始吧:本文地址:,未经许可,不得转载.

入口文件在定义基本目录路径之后,加载Cola.php和配置文件,然后做了三件事。分别是getInstance(),boot(),dispatch()代码如下:本文地址:,未经许可,不得转载.

require COLA_DIR.'/Cola.php';
Cola::getInstance()->boot($config)->dispatch();

其中:Cola::getInstance() 完成拿到实例化Cola类,定义好MVC等各种功能基类文件路径,然后就是去实例化Cola_Config类。然后使用registerAutoload注册自动加载的方法为Cola::loadClass。getInstance的功能就完成了。代码如下:

protected function __construct()
{
    $config['_class'] = array(
        'Cola_Router'      => COLA_DIR . '/Router.php',
        'Cola_Model'       => COLA_DIR . '/Model.php',
        'Cola_View'        => COLA_DIR . '/View.php',
        'Cola_Controller'  => COLA_DIR . '/Controller.php',
        'Cola_Com'         => COLA_DIR . '/Com.php',
        'Cola_Com_Widget'  => COLA_DIR . '/Com/Widget.php',
        'Cola_Exception'   => COLA_DIR . '/Exception.php'
    );
    self::$config = new Cola_Config($config);
    self::$_config = &self::$config->reference();
    Cola::registerAutoload();
}

boot($config) 完成单独的配置文件加载并判断数组php轻框架,另外将上面的_class字段与这个合并成一个配置数组。

dispatch() 这个方法进去后第一步通过Router类拿到PATH_INFO数据并通过Router类的match方法分析路由,主要是和用户的自定义路径进行匹配,然后通过_enableDynamicMatch方法拿到controller和action参数。$this->_dispatchInfo就是一个数组里面包括controller和action,另外里面还有一个$file, 我看业务里面没有用到,通过看代码发现它应该是在_urls中除了可以配置controller和action参数外,另外也可以只配置一个文件名或者路径,然后Cola可以通过这两种方式来加载对应的处理文件。除此之处,这个处理文件不一定是类,也可以是方法,因为下面的逻辑可以看到call_user_func可以执行不只有数组参数,还可以直接传入一个方法来处理。

到这里框架的基本逻辑也就完成了,剩下的就是调用具体控制器的具体方法来进行处理,在对Cola核心类的loadClass自动加载类方法进行输出时,罗列出了Cola自动加载文件的顺序,顺序如下:

Cola_Router------------

业务控制器------------

Cola_Controller------------

Cola_Request------------

业务模型-----------

Cola_Model------------

Cola_Com------------

Cola_Com_Cache------------

Cola_Com_Cache_Redis------------

Cola_Com_Cache_Abstract------------

Cola_Com_Db------------

Cola_Com_Db_Masterslave------------

Cola_Com_Db_Abstract------------

Cola_Com_Db_Pdo_Mysql------------

(编辑:鹰潭站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!