您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程

phpcmsv9源码pc_base::creat_app()参数说明

程欢2025-06-10 18:28:43phpcms教程已有4人查阅

导读在前面我们已经知道了,这个load_sys_classs静态方法,它加载了PC_CMS/libs/classes/application.class.php默认的这个函数这个方法是实例化的,所以我们找到application.class.php

return self::load_sys_classs('application');
在前面我们已经知道了,这个load_sys_classs静态方法,它加载了PC_CMS/libs/classes/application.class.php
默认的这个函数这个方法是实例化的,所以我们找到application.class.php,看看他的构造函数吧
构造函数就简单的几行代码,第15行,加载了param.class.php,后面定义的常量都和param有关,让我们来看看这个类文件
12先声明一个私有变量$route_config
下面的构造函数get_magin_quotes_gpc()是检测是否开启这个配置,new_addslashes()函数在global.func.php函数中定义了。
22三元运算,我们打开route.php文件,返回了一个二维数组,
其中下标为'default'',我们就直接取出default这个数组了,
但是为什么phpcms要做这个判断呢,其中SITE_URL在base.php中定义了
define('SITE_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''));
本地测试是localhost,是不是为了检测自己定义的路由规则呢?暂时不能知道了。
24-37目前为止都是未执行的,因为$this->route_config其实是一个一维数组。
print_r($this->route_config) Array( [m] => content [c] => index [a] => init)
所以这个构造函数,只存在了个变量
$this->route_config
这3个函数就比较简单返回Array([m]=>content[c]=>index[a]=>init)里面的数据
OK,我们返回application.class.php
$this->init();
26行,直接调用了load_controller,我们直接看load_controller函数
第44行
load_controller($filename='',$m='') 
上面的init并没有传参,
而且在构造函数中我们已经取出了ROUTR_C,ROUTE_M的值
那么此时的$filename=index$m=content
所以47-63行的代码意思为
判断这个模块下的这个文件是否存在,存在就加载,同样判断了有没有以MY_开头的自己的扩展,有的话也加载,并实例化
如果没有就
exit'Controller does not exist.';
回到init函数,此时已经加载了控制器,并实例化了index.php
init()这个函数,主要注意的就是俩个函数method_exists()和call_user_func()不明白的同学,看手册吧,这个
call_user_func(array$controller,ROUTE_A))
直接就执行了index.php里面的init方法
好了,application.class.php函数就说到这吧,如果一篇写太多,朋友们看的时候会头大。
下一章,我们进去content模块下的index.php控制器的init方法

本文标签:

很赞哦! (1)

暂无内容
暂无内容
暂无内容
暂无内容
留言与评论 (共有 0 条评论)
昵称:
匿名发表 登录账号
         
验证码: