PHPCMS V9二次开发简明手册
模型-视图-控制器 (MVC)
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
URL访问
URL参数说明
参数 | 描述 | 位置 | 备注 |
m | 模块目录名 | phpcms/modules中模块目录名称 | 必须 |
c | 控制器名称 | phpcms/modules/模块/*.php文件名称(与此文件中的类名称相同) | 必须 |
a | 事件名称 | phpcms/modules/模块/*.php中的方法名称 | 默认为init |
系统类库与函数库调用
1. 系统类库位于系统的phpcms/libs/classes目录下面,类库文件名为*.class.php
2. 系统函数库位于系统的phpcms/libs/functions目录下面,函数库文件名为*.func.php,其中global.func.php为框架中默认加载,global.func.php中函数可直接使用
系统类库调用
$http = pc_base::load_sys_class('http'); //实例化http类
pc_base::load_sys_class('format', '', 0); //调用form类,不进行实例化操作
注解:
pc_base::load_sys_class(
'类库名',
'类库所处文件夹(相对于网站根目录,默认为: libs/classes)',
是否(1/0)实例化并返回实例
);
系统函数库调用
pc_base::load_sys_func('mail'); //调用mail函数包,即载入mail.func.php文件
注解:
pc_base::load_sys_func('函数库名称');
命名规范
1.类文件需要以.class.php为后缀(这里是指的phpcms的系统类库文件和模块中的类库文件,第三方引入的不做要求),例如http.class.php。
2.函数文件需要以.func.php为后缀(第三方引入的不做要求),例如mail.func.php。
3.类名和文件名一致,例如 phpcmsapp类的文件命名是phpcmsapp.class.php。
4.数据模型需要以“数据表名称_model.class.php”为形式,类名称与文件名必须相同。
配置文件调用
$upload_url = pc_base::load_config('system','upload_url'); //返回caches/configs/system.php文件中数组的关键字为upload_url的值
注解:
pc_base::load_config(
'配置文件的文件名',
'指定关键字以便返回其对应的元素值,不指定则返回整个数组',
'默认值(默认为空)',
是否(1/0)强制重新加载,默认为false,即调用上次加载的结果
);
对已存在的控制器、类库进行二次开发
在原文件的相同位置创建 MY_原文件名 的文件,其内容一般格式为:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
class MY_原文件中的类名称 extends原文件中的类名称{
function __construct() {
parent::__construct();
}
……your code
}
以上并不是通用格式,具体格式要参照着你要二次开发的原文件来书写。
要注意的是,不需要在二次开发的版本中手动载入你扩展的原文件,PHPCMS框架会自动载入的。
创建模块开发流程
为你的phpcms创建一个模块的一般开发流程是:
1. 创建数据库和数据表(没有数据库操作可略过);
2. 创建模块目录(位于 phpcms/modules/ 目录中,可以通过 index.php?m=模块文件夹名 来访问);
3. 创建模块控制器类(通过 index.php?m=模块文件夹名&c=控制器名 来访问控制器类中的init方法,可以通过指定a参数来指定要访问的类方法)、模块类库包(位于phpcms/modules/模块名/classes / 目录下,在控制器类中用 $var = pc_base :: load_app_class('类库名'); 载入)和模块函数库包(位于phpcms/modules/模块名/functions / 目录下,在控制器类中用pc_base :: load_app_func('函数库名'); 载入);
4. 创建模型类(位于 phpcms/model/模块名/ 目录中,并在控制器类中使用 $this->db =pc_base::load_model('模型类名'); 来加载。如果只是简单的模块可以不必创建);
5. 创建模板文件(后台模板放在 phpcms/modules/模块名/templates/ 目录下,前台模板放在phpcms/templates/default/模块名/ 目录下);
6. 运行和调试。