base.php内容
定义字符集 路径 加载公用函数库 输出的方式静态常量标识的路径名字可以在程序中组合不同的路径
在处理index.php的请求中,使用的函数是pc_base::creat_app();
调用函数的过程为
create_app->load_sys_class->_load_class->init->call_user_func->index->init->
phpcmsv9中一般的处理请求的调用过程为
create_app->load_sys_class->_load_class->init->call_user_func->c:a()->template
creat_app
这个函数中调用的是静态的方法 load_sys_class,load_sys_class方法的功能是加载系统类库,load_sys_class是public static的,可以在不同的模块中加载使用,可以只能通过这个方法调用系统类库,load_sys_class内部使用的是私有的加载系统类的方法。
public static function creat_app() {
return self::load_sys_class('application');
}
public static function load_sys_class($classname, $path = '', $initialize = 1) {
return self::_load_class($classname, $path, $initialize);
}
这里使用的是默认的调用,classname的值为application,path值为空,initialize的值为1,表示调用初始化方法,即是不是调用new classname的操作。
_load_class这个方法要实现的功能分两部分,加载phpcms/libs/classes中定义的系统级类,加载扩展的系统级类。在进行phpcmsv9的二次开发时,会使用MY_开始的扩展的类,就是在这个方法中进行定义的,在这里可以改变开始的标识,不再使用MY_开始,可以在这个方法中修改要使用的标识用的字符组合。
综上,现在的操作的结果是调用了系统类库中的application类,并且要使用
new application的操作进行对象的构建。
application.php这个文件的路径为phpcms/libs/classes/application.php
在进行new application的操作后,调用的是构造方法__construct和init其中init在构造方法中进行调用。call_user_func(array($controller, ROUTE_A));这是init中的方法调用,
call_user_func在php5中已经不再推荐使用了,这句的作用是调用控制器的方法,
在phpcmsv9的概念体系中,要处理的是ROUTE_A这个事件。此处的事件值为空。
application的具体操作
$param = pc_base::load_sys_class('param'); //系统类param用来接收mca的值
define('ROUTE_M', $param->route_m());//接收m的值 m=module
define('ROUTE_C', $param->route_c());//接收c的值 c=controller
define('ROUTE_A', $param->route_a());//接收a的值 a=action
$this->init();//调用初始化方法
init方法
加载controller类,检测控制器中有没有ROUTE_A这个方法,如果存在调用,如果不存在调用exit退出程序的执行,并显示提示信息 action 不存在。加载controller的过程是组合路径信息,在modules中查找模块文件,检测文件是否存在,这里检测的是conent下的index是否存在,并且查找是否有扩展的类,此处查找的是以MY_开始的控制器文件。
此处使用的是默认的route.php中的配置信息,使用content下的index.php中的index类的
param是面向对象概念中的URL,这是URL的处理类,关于不同的控制器和事件的处理可以通过param进行处理,在param中返回的是mca这三个参数的值。
在index中调用init返回的是默认的系统首页的结果,这里使用的template函数在global.func.php中定义,include template('content','index',$default_style);这里调用的是
content模块下的index即系统默认的主页面的内容。