版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
控制器模块开发文档=beat1.0=编写:车险无忧日期:2014/06/30第一章控制器概述 控制器,即为MVC设计模式中的控制(controller)模块,负责处理应用程序中用户交互的部分,通常负责控制用户输入,调取视图,向模型发送数据。简单来说,当用户点击web中的超链接和发送HTML表单操作时,控制器开始处理用户输入内容,并且决定调用哪个模型来处理请求,并决定使用哪个视图来显示返回的数据。 在PHPCMSV9中,控制器也就是模块的类文件,位于phpcms/modules/模块/目录下面。类名称为文件名.php。但控制器类名称必须与控制器文件名称相同。我们首先试试创建第一个程序:1.1输出Helloworld!我们创建一个简单的控制器,以便直观的了解其工作原理。使用你喜欢的编辑器创建一个名为hello.php的文件,然后输入下面代码:classhello{ functionindex() { echo'HelloWorld'; }}然后在phpcms/modules目录下创建一个名为hello的文件夹,将刚刚创建的hello.php文件保存在phpcms/modules/hello文件夹下。(phpcms/modules/hello/hello.php)现在,使用URLhttp://localhost/?m=hello&c=hello&a=index来访问您的网站,不出意外,你应该看到HelloWorld!(我们假设您的服务器在本地,如果在其他服务器上,你可以将localhost换成你的域名)。第二章系统配置2.1URL访问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配置文件来加载默认的控制器:returnarray( 'default'=>array('m'=>'content','c'=>'index','a'=>'init'),);这里数组里面的m,v,c则问默认的模块,控制器,和方法。你可以重新定义它们。*同时你也可以自己定义最后默认的参数,即data属性,data是一个二维的数组,可以设置POST和GET的默认参数,分别对应PHP中$_POST和$_GET两个超级全局变量。*你可以额使用$_POST['cid']来得到下面POST中的数组的默认值。<?phpreturnarray( 'default'=>array( 'm'=>'phpcms', 'c'=>'index', 'a'=>'init', 'data'=>array( 'POST'=>array( 'cid'=>'1' ), 'GET'=>array( 'contentid'=>'1' ) ) ));?>2.4系统配置系统相关配置信息在文件caches/configs/system.php文件中,里面有详细的注释信息。第三章控制器命名规范3.1PHPCMS硬性规定:*类文件名必须以.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命名方式所有类、方法、变量命名均遵循LinuxC命名规范:所有单词字母均为小写,不同单词之间使用(_)短下划线来连接,名词尽量使用单词的组合,其含义必须简洁明了。慎用单词的缩写,如果使用单词缩写,必须保证其表达含义明确。正确:show_message;可以明确其表示的意思;错误:a_b_c_d;不知所云错误:show_Message;所有单词必须小写,不得出现任何大写3.2.6防止恶意访问在PHPCMS所有的控制器中第一行必须检测IN_PHPCMS常量是否定义,以防止用户私自直访问控制器:defined('IN_PHPCMS')orexit('Nopermissionresources.');第四章文件调用4.1类库的调用4.1.1系统类库的调用所有系统类库位于phpcms/libs/classes目录下,类库文件名为*.class.php你可以在控制器中这样调用一个form.class.php文件,但是不对其进行实例化:Publicfunctionindex(){ $http=pc_base::load_sys_class('form','',0);}或者这样实例化一个类http.class.phpPublicfunctionindex(){ $http=Pc_base::load_sys_class('http');}4.1.2模块类库的调用所有模块类库的调用不同于系统类库的调用模块类库位于phpcms/modules/模块名名/classes/目录下。你可以这样调用一个phpcms/modules/content/classes/url.class.php文件publicfunctioninit(){ pc_base::load_app_class('url','content');}其中第一个参数url为类名称,第二个参数表示content模块。4.2函数库调用4.2.1系统函数库调用*系统函数库位于phpcms/libs/functions目录下,函数库文件名为*.func.php*其中golbal.func.php为系统自动加载的全局函数库,你可以在任何地方随时调用。*如果你想自己拓展函数库,可以将其写在extention.func.php文件里。你可以这样调用一个系统函数库文件mail.func.phpPublicfunctionindex(){ Pc_base::lad_sys_func('mail');}4.2.2模块函数库调用模块函数库调用不同于系统函数库调用模块函数库位于phpcms/modules/模块名称/functions/目录中你可以这样调用一个phpcms/modules/content/classes/url.class.php文件publicfunctioninit(){ pc_base::load_app_func('global','content');}其中第一个参数global为函数库文件名称,第二个参数表示content模块。4.3模板调用4.3.1前台模板调用*前台模板指的是不含控制权的页面。*前台模板页面存放于phpcms/templates/default目录下。你可以在default文件夹下建立多个文件夹来管理你的模板。*模板文件为html静态文件你可以这样调用存放于phpcms/templates/default/content下的index.html文件。defined('IN_PHPCMS')orexit('Nopermissionresources.');pc_base::load_app_class('admin','admin',0);classindexextendsadmin{ publicfunction__construct(){ parent::__construct(); } publicfunctioninit(){ //调用后台模板 includetemplate('content','index','default'); }}其中default为模板风格包,如果不填写,则默认为default。4.3.2后台模板调用后台控制器需要在之前加载admin模块下的admin类,并继承该类。由于涉及到继承,所以在子类中的方法命名不能与父类中的相同,否则会造成不必要的影响。你可以在后台控制器中这样调用后台phpcms/modules/admin/index.php的模板:defined('IN_PHPCMS')orexit('Nopermissionresources.');pc_base::load_app_class('admin','admin',0);classindexextendsadmin{ publicfunction__construct(){ parent::__construct(); } publicfunctioninit(){ include$this->admin_tpl('index');//调用后台模板 }}继承的admin父类中有以下一些方法:方法名称作用备注Check_admin判断用户是否登录Admin_tpl加载后台模板admin_menu按父ID查找菜单子项submenu获取菜单头部菜单导航current_pos当前位置get_siteid获取当前的站点IDget_siteinfo获取当前站点信息check_priv权限判断manage_log记录日志check_ip后台IP禁止判断...lock_screen检查锁屏状态check_hash检查hash值验证用户数据安全性admin_list_template后台信息列表模板4.3.3配置文件调用PHPCMS中的配置文件在cacehs/configs/目录下,在控制器中使用load_config方法调用配置文件:你可以这样调用系统配置文件:caches/configs/system.php中的upload_url值pc_base::load_config('system','upload_url');参数设置:load_config($file,$key='',$default='',$reload=false)参数名称作用参数类型$file配置文件String$key要获取的配置键String$default默认配置,当获取配置失败时起作用String$reload是否强制重新加载Boolean4.4数据库模块调用4.4.1数据库模块文件调用*数据库模块位于:phpcms/model/目录下。*数据库模型文件命名规则建议为数据库表名称+'_model.class.php'*假设使用数据库'test',首先要建立一个数据库模型文件test_model.class.php*注意:如果文件名称为test_model.class.php则模型的类名称必须与文件名称相同。defined('IN_PHPCMS')orexit('Nopermissionresources.');pc_base::load_sys_class('model','',0);classtest_modelextendsmodel{ public$table_name=''; publicfunction__construct(){ $this->db_config=pc_base::load_config('database'); $this->db_setting='default'; $this->table_name='test'; parent::__construct(); }}*我们可以使用$this->db_setting='default';来获取数据库默认配置。Default为默认值,开发过程中一般不需要修改。*通过$this->table_name='test'来配置数据表的名称现在你可以使用下面的代码在控制器中调用刚刚建立的数据库模型文件test_model.php:publicfunctioninit(){ pc_base::load_model('test_model');}4.4.2数据库模块方法调用当调用过来一个数据库模型文件之后,我们必须要使用其中的方法,才可以获取相关的数据,PHPCMS中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 播音主持人雇佣协议
- 销售提成奖金合同
- 培训学校专业职业指导培训服务合同
- 终止水泥购销合同协议
- 安全协议与合同
- 招标投标表格部分的内容解读与分析
- 网络营销合同范本版合同协议解读
- 数字风向计仪表采购合同
- 公司总公司与分公司合作合同
- 房屋购买委托协议范本
- 急救理论知识试题库(附参考答案)
- 《春秋》导读学习通超星期末考试答案章节答案2024年
- 中标方转让合同协议书
- 人教版(2024)七年级地理上册3.2《世界的地形》精美课件
- APQC跨行业流程分类框架(PCF)V7.4版-2024年8月21日版-雷泽佳编译
- 国家开放大学本科《理工英语3》一平台机考总题库2025珍藏版
- 中药学总结(表格)
- 2022-2023学年广东省深圳市高一(上)期末数学试卷-解析版
- 城市绿地系统规划智慧树知到期末考试答案章节答案2024年浙江农林大学
- 大数据与人工智能营销智慧树知到期末考试答案章节答案2024年南昌大学
- 电力系统分析智慧树知到期末考试答案章节答案2024年山东建筑大学
评论
0/150
提交评论