PHPCMS V9开发文档.docx_第1页
PHPCMS V9开发文档.docx_第2页
PHPCMS V9开发文档.docx_第3页
PHPCMS V9开发文档.docx_第4页
PHPCMS V9开发文档.docx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

服务器要求PHP 版本 5.2 或更新的版本。MySQL版本推荐5.0或者更新版本。模型-视图-控制器 (MVC)MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。视图 :视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型 :模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制器 :控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。文件目录结构根目录| api接口文件目录| caches 缓存文件目录 | configs 系统配置文件目录 | caches_* 系统缓存目录| phpcms phpcms框架主目录 | languages 框架语言包目录 | libs 框架主类库、主函数库目录 | model 框架数据库模型目录 | modules 框架模块目录 | templates 框架系统模板目录| phpsso_server phpsso主目录| statics 系统附件包 | css 系统css包 | images 系统图片包 | js 系统js包| uploadfile 网站附件目录| admin.php 后台管理入口| index.php 程序主入口| crossdomain.xml FLASH跨域传输文件| robots.txt 搜索引擎蜘蛛限制配置文件| favicon.ico 系统icon图标URL访问PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。参数名称描述位置备注m模型/模块名称phpcms/modules中模块目录名称必须c控制器名称phpcms/modules/模块/*.php 文件名称必须a事件名称phpcms/modules/模块/*.php 中方法名称模块访问方法示例:/index.php?m=content&c=index&a=show&id=1其中m = content为模型/模块名称 位于phpcms/modules/contentc = index为控制器名称位于phpcms/modules/content/index.phpa = show为时间名称位于phpcms/modules/content/index.php 中show()方法id = 1为其他参数 与正常get传递参数形式相同如果我们访问您的域名 如:/index.phpphpcms默认路由会定位到content模块的index控制器中的init操作,因为系统在没有指定模块和控制器的时候,会执行默认的模块和操作。因此下面的URL的结果是相同的:系统还支持URL路由的功能,这些都能够带来其他的url访问效果。/index.php?m=content&c=index&a=init系统类库与函数库调用1. 系统类库位于系统的phpcms/libs/classes目录下面,函数库文件名为*.class.php,其中global.func.php为框架中默认加载,global.func.php中函数可直接使用2. 系统函数库位于系统的phpcms/libs/functions目录下面,函数库文件名为*.func.php系统类库调用/* 加载系统类方法* param string $classname 类名* param string $path 扩展地址* param intger $initialize 是否初始化*/publicstaticfunctionload_sys_class($classname,$path=,$initialize=1)returnself:_load_class($classname,$path,$initialize);示例:$http = pc_base:load_sys_class(http); /实例化http类pc_base:load_sys_class(format, , 0);/调用form类,不进行实例化操作系统函数库调用/* 加载系统的函数库* param string $func 函数库名*/publicstaticfunctionload_sys_func($func)returnself:_load_func($func);示例:pc_base:load_sys_func(mail); 调用mail函数包入口程序PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户可以直接请求运行的。phpcms v9的入口程序包含如下几行:index.php这段代码首先加载了 phpcms 框架的引导文件 base.php,然后它根据指定的配置文件建立了一个 Web 应用实例并运行。模块phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块。即url访问中的m示例:/index.php?m=content那么您访问的就是phpcms/modules/content 这个模块。如果创建一个,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。控制器phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为mytest的控制器,那么他的命名为mytest.php即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。如果您创建了一个mytest.php在test模块下,那么我们在浏览器里面输入URL:/index.php?m=test&c=mytest下面是一个控制器类的基本格式,在构建模块部分会具体讲解如果你添加的控制器类继承了其他的类,你要小心你的方法名不要和那个类中的方法名一样了,否则你的方法会覆盖原有的。命名规范 PHPCMS其自身的一定规范。下面是使用PHPCMS做二次开发中应该遵循的命名规范:类文件需要以.class.php为后缀(这里是指的phpcms的系统类库文件和模块中的类库文件,第三方引入的不做要求),例如http.class.php。函数文件需要以.func.php为后缀(第三方引入的不做要求),例如mail.func.php。类名和文件名一致,例如phpcmsapp类的文件命名是phpcmsapp.class.php。数据模型需要以“数据表名称_model.class.php”为形式,类名称与文件名必须相同。配置文件调用配置文件配置在caches/configs/目录下。配置文件调用:使用load_config方法/* * 加载配置文件 * param string $file 配置文件 * param string $key 要获取的配置荐 * param string $default 默认配置。当获取配置项目失败时该值发生作用。 * param boolean $reload 强制重新加载。 */ publicstaticfunctionload_config($file,$key=,$default=,$reload=false) static$configs=array(); if(!$reload&isset($configs$file) if(empty($key) return$configs$file; elseif(isset($configs$file$key) return$configs$file$key; else return$default; $path=CACHE_PATH.configs.DIRECTORY_SEPARATOR.$file.php; if(file_exists($path) $configs$file=include $path; if(empty($key) return$configs$file; elseif(isset($configs$file$key) return$configs$file$key; else return$default; 示例:调用系统配置中的附件路径$upload_url=pc_base:load_config(system,upload_url);二次开发技巧1.如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过MY_*.php的形式进行二次开发。例如您要对改phpcms/mood/index.php进行二次开发。您可以在与index.php同级的目录下建立MY_index.phpMY_index.php代码如下?phpclassMY_indexextendsindexfunction_construct()parent:_construct();your code这样当您通过url访问index控制器的时候,系统会默认指向MY_index.php 并且原文件的方法将被继承,可以直接使用。数据库配置数据库配置文件位置:caches/configs/database.php我们打开这个配置文件,加入我们的数据库配置信息。数据库配置信息为二维数组结构,默认为default,可以根据default结构配置多个数据库链接(如:extended_1)array(hostname=localhost,database=phpcms,username=admin,password=admin,tablepre=v9_,charset=gbk,type=mysql,debug=true,pconnect=0,autoconnect=0), /* 以下默认不存在 */extended_1=array(hostname=,database=phpcms,username=admin,password=admin,tablepre=v9_,charset=gbk,type=mysql,debug=true,pconnect=0,autoconnect=0),);?根据您的数据库连接信息修改上面的配置内容,修改完成后,保存该数据库配置文件。路由配置路由配置文件位置:caches/configs/route.php我们打开这个配置文件,加入我们的路由配置信息。路由配置信息为二维数组结构,默认为default。路由配置文件内容是这样的:array(m=admin,c=index,a=init), =array(m=test,c=index,a=init), ); ?基中“m”为模型,“c”为控制器,“a”为事件,“data”为其他附加参数。data为一个二维数组,可设置POST和GET的默认参数。POST和GET分别对应PHP中的$_POST和$_GET两个超全局变量。如下面的例子,在程序中您可以使用$_POSTcatid来得到data下面POST中的数组的值。data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。如: array( m=phpcms, c=index, a=init, data=array( POST=array( catid=1 ), GET=array( contentid=1 ) ) ) ) ?外部程序POST了一个变量catid=2那么你在程序中使用$_POST取到的值是2,而不是配置文件中所设置的1。系统配置系统配置文件位置:caches/configs/system.php具体详见该文件注释开发流程为你的phpcms创建一个模块的一般开发流程是:1. 创建数据库和数据表;(没有数据库操作可略过)2. 创建模块目录3. 创建模块控制器类;4. 创建模块类与模块函数;(如果只是简单的模块可以不必创建)5. 创建模板文件;6. 运行和调试。创建模块phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块如果要创建一个模块,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。例如我要开发一个叫做test的模块,那么首先在phpcms/modules 目录下创建文件夹,并将其命名为test。test模块的标准结构通常是这样的。其中classes为模块类库包functions为模块函数库包templates为模块模板包这里通常放置含有权限控制的控制器模板,也就是后台模板。如果您的模板有单独的前台模板,你需要在phpcmstemplatesdefault下创建一个您的模块目录来放置前台模板,default为你的风格包名称,我们默认适用default创建模块控制器类在创建模块中我们已经创建好了一个名为“test”的模块,接下来我们继续为这个模块添加两个控制器类。phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为mytest的控制器,那么他的命名为mytest.php即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。控制器类文件包含两种形式:1.mytest.php 控制器,前台浏览(不含权限控制)这个控制器的url访问方法前面已经介绍过了,/index.php?m=test&c=mytest /index.php?m=test&c=mytest&a=mylist没有填写 “a” 的情况下,默认调用init方法2.mytest_admin.php 控制器,后台管理(含权限控制)后台控制控制器需要加载admin模块下的admin类,并继承该类。需要注意的是因为你添加的控制器类继承了其他的类,你要小心你控制器的方法名不要和该类中的方法名一样了,否则会造成影响,具体请查看admin类中有哪些方法。在控制器中增加模板调用phpcms 可以实现完全的模板与程序分离,所以在我们的控制器程序中要加载模板,才可以更友好的显示出来。1.加载前台模板前台模板文件在phpcmstemplatesdefault模块名称 目录中,本示例也就在phpcmstemplatesdefaulttest中加载模板方法如下:includetemplate(test,mytest,default);其中test为模块名称mytest为模板目录下模板名称,default为风格名称,默认不填为defalut在上面例子中如果要给mytest.php中init方法加载一个mytest的模板,如下publicfunctioninit() $var=hello world!; includetemplate(test,mytest,default); 这样我们通过url访问该方法的时候也就加载了对应的模板。2.加载后台模板后台模板文件在phpcmsmodules模块名称templates 目录中,本示例也就在phpcmsmodulestesttemplates 中加载模板方法如下: include $this-admin_tpl(mytest_admin_list);其中mytest_admin_list为phpcmsmodulestesttemplates中mytest_admin_list.tpl.php,注意:此处模板必须以.tpl.php 作为后缀在上面例子中如果要给mytest_admin.php中init方法加载一个mytest_admin_list的模板,如下publicfunctioninit() $myvar=oh,i am phpcmser; include $this-admin_tpl(mytest_admin_list); 创建数据库模型类数据库模型位于:phpcms/model/ 目录下。数据模型文件的命名规则建议为数据表名称+_model.class.php如果在我们的创建的模块中我要使用一个数据库“test”,首先需要建立一个数据库模型文件,文件名称为test_model.class.php内容如下:db_config=pc_base:load_config(database);$this-db_setting=default;$this-table_name=test;parent:_construct();?注意:1.数据库模型类名称必须与文件名称相同;2.$this-db_setting = default为数据库配置文件中配置数据库链接池名称,默认为default,一般情况下不需要修改。3.$this-table_name = test为数据表名称这样我们就建立好了一个数据库模型类。在模块的控制器中使用$this-db=pc_base:load_model(test_model);来加载。具体如下db=pc_base:load_model(test_model);publicfunctioninit()$result=$this-db-select();var_dump($result); ?其中$this-db中所支持的方法请参照phpcms/libs/classes/model.class.php中方法PHPSSO 数据库结构 (2010-12-28)PHPSSO 数据库结构 (2010-12-28)表 1 : ps_admin字段类型Null默认额外注释idsmallint(6)PKauto_increment管理员IDusernamechar(20)NO用户名passwordchar(32)NO密码encryptchar(6)YES密码密钥issupertinyint(1)YES0是否为超级管理员lastloginint(10)YES最后登陆时间ipchar(15)YES最后登陆IP键名类型字段PRIMARYPRIMARYidusernameINDEXusername表 2 : ps_applications字段类型Null默认额外注释appidsmallint(6) unsignedPKauto_increment应用标识idtypechar(16)NO标识类型namechar(20)NO应用名称urlchar(255)NO应用访问地址authkeychar(255)NO通信密钥ipchar(15)NO应用ip地址apifilenamechar(30)NOphpsso.phpapi通信文件名称charsetchar(8)NO应用字符集synlogintinyint(1)NO0是否同步登陆键名类型字段PRIMARYPRIMARYappidsynloginINDEXsynlogin表 3 : ps_members字段类型Null默认额外注释uidint(10) unsignedPKauto_increment用户标识idusernamechar(20)NO用户名passwordchar(32)NO密码randomchar(8)NO安全码emailchar(32)NO邮箱regipchar(15)NO注册ipregdateint(10) unsignedNO0注册时间lastipchar(15)NO0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论