控制器模块开发文档= beat 1.0 =编写:车险无忧日期:2014 / 06 / 30第一章控制器概述控制器,即为MVC设计模式中的控制(controller)模块,负责处理应用程序中用户交互的部分,通常负责控制用户输入,调取视图,向模型发送数据。
简单来说,当用户点击web中的超链接和发送HTML表单操作时,控制器开始处理用户输入内容,并且决定调用哪个模型来处理请求,并决定使用哪个视图来显示返回的数据。
在PHPCMS V9中,控制器也就是模块的类文件,位于phpcms/modules/模块/目录下面。
类名称为文件名.php。
但控制器类名称必须与控制器文件名称相同。
我们首先试试创建第一个程序:1.1 输出Hello world!我们创建一个简单的控制器,以便直观的了解其工作原理。
使用你喜欢的编辑器创建一个名为hello.php的文件,然后输入下面代码:classhello{functionindex(){echo'Hello World';}}然后在phpcms/modules目录下创建一个名为hello的文件夹,将刚刚创建的hello.php文件保存在phpcms/modules/hello文件夹下。
(phpcms/modules/hello/hello.php)现在,使用URLhttp://localhost/?m=hello&c=hello&a=index来访问您的网站,不出意外,你应该看到Hello World!(我们假设您的服务器在本地,如果在其他服务器上,你可以将localhost换成你的域名)。
第二章系统配置2.1 URL访问PHPCMS遵循MVC开发模式,基于控制器和操作的方式进行访问,采用单一入口index.php 进行项目的部署和访问,无论访问任何一个模块或者功能,都需要通过该文件。
http://localhost/?m=hello&c=hello&a=index&id=3* M = hello 为模型/模块的名称,位于phpcms/modules/content* C = hello为控制器名称,位于phpcms/modules/hello/hello.php* A = index为事件名称,位于phpcms/modules/hello/hello.php中index()方法。
* Id = 3为参数,和普通URL参数相同2.2 定义默认控制器当你使用localhost访问的时候,phpcms会默认加载config/route.php配置文件来加载默认的控制器:return array('default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'),);这里数组里面的m,v,c则问默认的模块,控制器,和方法。
你可以重新定义它们。
* 同时你也可以自己定义最后默认的参数,即data属性,data是一个二维的数组,可以设置POST和GET的默认参数,分别对应PHP中$_POST和$_GET两个超级全局变量。
* 你可以额使用$_POST['cid']来得到下面POST中的数组的默认值。
<?phpreturn array('default' =>array('m'=>'phpcms','c'=>'index','a'=>'init','data'=>array('POST'=>array('cid'=>'1'),'GET'=>array('contentid'=>'1'))));?>* 外部程序POST了一个变量cid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所设置的1。
* 注意:data中的所设置的参数等级比较低。
如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。
2.3 数据库配置在本地搭建环境或者系统部署到服务器都需要进行数据库的重新配置,PHPCMS提供了单独的数据库配置文件,方便配置数据库配置。
打开PHPCMS数据库配置文件:caches/configs/database.phpreturn array ('default' =>array ('hostname' =>'localhost','database' =>'ichexian_v4','username' =>'root','password' =>'','tablepre' =>'rrb_','charset' =>'utf8','type' =>'mysql','debug' =>true,'pconnect' => 0,'autoconnect' => 0),);配置名称释义备注Hostname服务器名称本地localhostDatabase数据库名称Username数据库用户名Password数据库密码Tablepre数据库前缀可以为任意字符串Charset数据库字符集Type数据库类型比如Mysql神马的Debug是否开启错误提示上线后需要关闭Pconnect是否永久链接数据库0:否,1:是autoconnect是否自动链接* PHPCMS还提供自己定义拓展数据库配置。
数据库配置信息为二维数组,默认为default,自行拓展的数据库配置只要结构和default一致即可:例如:return array ('default' =>array ('hostname' =>'localhost','database' =>'ichexian_v4','username' =>'root','password' =>'','tablepre' =>'rrb_','charset' =>'utf8','type' =>'mysql','debug' =>true,'pconnect' => 0,'autoconnect' => 0),);return array ('mydatabase' =>array ('hostname' =>'10.01.125.1','database' =>'hahaha','username' =>'leyuxinsi','password' =>'123456','tablepre' =>'leyu_','charset' =>'gbk','type' =>'mysql','debug' =>true,'pconnect' => 0,'autoconnect' => 0),);2.4 系统配置系统相关配置信息在文件caches/configs/system.php文件中,里面有详细的注释信息。
第三章控制器命名规范3.1 PHPCMS硬性规定:* 类文件名必须以.class.php为后缀,然后将类文件放在该模块的classes文件夹内。
比如在content模块内需要一个html类,则该html类文件名必须为html.class.php,该文件的存储路径为content/classes/html.class.php* 函数文件需要以.func.php为后缀,例如mail.func.php。
* 类名和文件名一致,例如phpcmsapp类的文件命名是phpcmsapp.class.php。
3.2 车险无忧代码编写规范3.2.1 规范目的:* 提高程序员工作效率和代码利用率。
* 便于所有程序员了解任何人编写的代码,快速弄清程序状况。
* 便于新来的同事快速的适应环境。
* 防止php开发人员犯同样的错误。
* 减少php程序员出错概率。
3.2.2 适用范围:所有车险无忧开发人员,程序设计人员,包含程序测试人员。
3.2.3 注释* 编写代码期间注释量必须达到总程序量的15%。
* 每个模块最上端必须说明模块名称、功能描述、作者以及版本号等信息。
* 每个过程、函数、方法等开头必须注释功能、参数、返回值等信息,参数必须带上类型。
* 变量定义的上一行在适当情况下应当注明单行注释。
* 在复杂程序或者关键算法部分必须给出适当的注释。
3.2.4控制器目录控制器的目录存储必须完全遵守PHPCMS的目录存储规则。
* Modules目录下建立的一级目录为模块。
* 在模块下的classes文件夹中一般存放该模块下的类库包。
* 在模块下的functions文件夹中一般存放该模块下的函数库包、* 在模块下的templates文件夹中存放带有权限控制的模板,一般为后台模板。
* 前台的模板存放于phpcms/templates/default目录下的文件夹中,default包为默认的模板风格包,你也可以自定义模板风格。
Phpcms/templates/self* 在模块下建立的文件为控制器。
3.2.5命名方式所有类、方法、变量命名均遵循Linux C命名规范:所有单词字母均为小写,不同单词之间使用(_)短下划线来连接,名词尽量使用单词的组合,其含义必须简洁明了。