【php精品源码栏目提醒】:网学会员在php精品源码频道为大家收集整理了“【精品】CmsTop开发手册-Lein87 - 其它资料“提供大家参考,希望对大家有所帮助!
CmsTop开发手册 发表评论0 编辑词条 目录 入门基础 程序框架 系统类库 系统函数 显示全部入门基础 编辑本段 回目录代码高亮功能在IE下会有不能换行的BUG火狐没有问题LAMPLAMP是基于Linux,Apache,MySQL和
PHP的开放资源网络开发平台,
PHP是一种有时候用Perl或Python可代替的编程语 言。
这个术语来自欧洲,在那里这些程序常用来作为一种标准开发环境。
名字来源于每个程序的第一个字母。
每个程序在所有权里都符合开放源代码标 准:Linux是开放系统;Apache是最通用的网络服务器;MySQL是带有基于网络管理附加工具的关系数据库;
PHP是流行的对象脚本语言,它包含 了多数其它语言的优秀特征来使得它的网络开发更加有效。
开发者在Windows操作系统下使用这些Linux环境里的工具称为使用WAMP。
虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于它们都是影响较大的开源软件,拥有很多共同特点,这就导致了 这些组件经常在一起使用。
在过去的几年里,这些组件的兼容性不断完善,在一起的应用情形变得更加普遍。
并且它们为了改善不同组件之间的协作,已经创建了某 些扩展功能。
目前,几乎在所有的Linux发布版中都默认包含了这些产品。
Linux操作系统、Apache服务器、MySQL数据库和Perl、
PHP 或者 Python语言,这些产品共同组成了一个强大的Web应用程序平台。
OOP面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。
OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。
OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。
为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
OOP 主要有以下的概念和组件: 组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。
每类组件都提 供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。
典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的 类的扩展,这样就 可以将类组织成树形或网状结构,这体现了动作的通用性。
由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。
MVC MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。
使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器 (C),它们各自处理自己的任务。
视图:视图是用户看到并与之交互的界面。
对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应 用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。
如何处理应用程序的界面变得越来越有挑战性。
MVC一个大的好处是它能为你的应用程序处理很多不同的视图。
在视图中其实没有真正的处理 发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型:模型表示企业数据和业务规则。
在MVC的三个部件中,模型拥有最多的处理任务。
例如它可能用象EJBs 模型:模型表示企业数据和业务规则。
在MVC的三个部件中,模型拥有最多的处理任务。
例如它可能用象EJBs和 ColdFusion Components这样的构件对象来处理数据库。
被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。
由于应用于 模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器:控制器接受用户的输入并调用模型和视图去完成用户的需求。
所以当单击Web页面中的超链接和发送HTML表单时,控 制器本身不输出任何东西和做任何处理。
它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制 器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
单一入口 单一入口通常是指一个项目或者应用具有一个统一(但并不一定是唯一)的入口文件,也就是说项目的所有功能操作都是通过这个入口文件进行的,并且往往 入口文件是第一步被执行的。
单一入口的好处是项目整体比较规范,因为同一个入口,往往其不同操作之间具有相同的规则。
另外一个方面就是单一入口带来的好处是控制较为灵 活,因为拦截方便了,类似如一些权限控制、用户登录方面的判断和操作可以统一处理了。
或者有些人会担心所有网站都通过一个入口文件进行访问,是否会造成太大的压力,其实这是杞人忧天的想法。
环境要求详见系统部署文档程序框架 编辑本段 回目录目录结构-apps(应用程序) -system(系统) -controller(控制器) -admin(后台控制器) -model(模型) -admin(后台模型) -lib(类库) -helper(助手类库) -view(后台视图) -member(会员)-config(配置文件)-data(数据) -cache(缓存目录) -apps(各应用缓存目录) -setting(各应用设置缓存) -table(数据表缓存) -table(数据表缓存) -templates(模板缓存) -dbkv(keygtvalue文本数据库目录) -logs(日志) -sessions(SESSION) -tmp(临时文件目录)-framework(框架) -acl(权限) -cache(缓存) -client(客户端) -core(核心) -db(数据库) -dbkv(keygtvalue文本数据库) -env(环境) -filter(过滤) -form(表单) -helper(助手类) -session(SESSION)-public(公开发布目录) -admin(后台) -app(动态) -img(公共图片、JS、CSS) -upload(附件) -www(html)-resources(资源)-templates(模板)-cmstop.
php(项目公共执行入口)需要 777 权限的目录:./config./data./templates./public/upload./public/upload./public/www运行流程架设通过浏览器访问 http://admin.cmstop.dev/appsystemampcontrolleradminampactionlogin则程序运行流程为:./public/admin/index.
php./cmstop.
php./apps/system/controller/abstract.
php./apps/system/controller/admin/admin.
php./apps/member/model/member.
php./apps/system/model/admin/admin.
php入口文件 1 defineCMSTOP_START_TIME microtimetrue 2 defineRUN_CMSTOP true defineIN_ADMIN 1 //后台 require 3 ../../cmstop.
php cmstop new cmstopadmin //admin frontend 4 cmstop-gtexecute程序加载 1 //加载框架类库 importhelper.upload //加载模型并返回对象 content 2 loader::modelcontent控制器前台控制器文件保存在 ./apps/appname/controller/ 目录示例代码: 1 class controller_index extends controller_abstract 2 function __constructamp app parent::__constructapp function index 3 this-gttemplate-gtdisplayindex 后台控制器文件保存在 ./apps/appname/controller/admin/ 目录示例代码: 1 class controller_admin_index extends 2 controller_abstract function __constructamp app 3 parent::__constructapp function index 4 this-gtview-gtdisplayindex 控制器内置方法和变量: 01 //当前用户信息 this-gt_userid //当前用户ID 02 this-gt_username //当前用户名 this-gt_roleid //当前用户角色ID this-gt_groupid 03 //当前用户组ID this-gtsetting //当前应用设置,数组 //JSON 对象 this-gtjson //JSON 对象 04 data this-gtjson-gtencodedata //JSON 加密 data 05 this-gtjson-gtdecodedata //JSON 解密 //后台视图模板 this-gtview //视图对象 06 this-gtview-gtassignvarname value //注册模板变量 07 this-gtview-gtassignarray //把数组注册为变量 08 this-gtview-gtdisplaycategory/index //直接显示解析后的模板内容 data 09 this-gtview-gtfetchcategory/index //获取解析后的模板内容到变量 //前台模板 10 this-gttemplate //视图对象 this-gttemplate-gtassignvarname value 11 //注册变量 this-gttemplate-gtassignarray //把数组注册为变量 12 this-gttemplate-gtdisplaysystem/index.html //显示 system/index.html 模板 13 data this-gttemplate-gtfetchsystem/index.html//获取 system/index.html 14 模板输出内容 //加载model content loader::modeladmin/content system//加载 15 ./apps/system/model/admin/content.
php,并返回对象 //判断是否为 GET 请求 this-gtis_get 16 //返回 bool 值 //判断是否为 POST 请求 this-gtis_post //返回 bool 值 //判断是否为 AJAX 请求 17 this-gtis_ajax //返回 bool 值 //执行另外一个action this-gtforwardapp 18 controller action array args array //URL 跳转 this-gtredirectapp 19 controller action array args array / /显示提示信息并且停止执行 20 this-gtshowmessagemessage url null ms 2000模型模型示例: 01 class model_admin_content extends model function 02 __construct parent::__construct //定义数据表 this-gt_table 03 this-gtdb-gtoptionsprefix.content //定义主键 this-gt_primary 04 contentid //定义数据表字段 this-gt_fields arraycontentid catid 05 modelid title color icon thumb tags 06 sourceidauthororiginal url weight instruct locked 07 lockedby published interactivedunpublished created createdby 08 modified modifiedby checked checkedby version status 09 workflow_step workflow_roleid pv comment_allow comment_count 10 //定义只读字段 this-gt_readonly arraycontentid modelid created 11 createdby //定义创建数据时自动填充字段 this-gt_create_autofill 12 arraycreatedgtTIME createdbygtthis-gt_userid versiongt1 13 //定义更新数据时自动填充字段 this-gt_update_autofill arraymodifiedgtTIME 14 modifiedbygtthis-gt_userid versiongtversion1 //定义输入过滤 15 this-gt_filters_input array //定义输出过滤 this-gt_filters_output 16 array //定义输入时自动验证 this-gt_validators array title gt array 17 not_emptygtarray标题不能为空 max_length gtarray80 标题不得超过80字节 18 catidgt array not_emptygtarray请选择栏目 max_lengthgtarray5 19 栏目ID不得超过5字节 is_numericgtarray栏目ID格式不正确 modelidgt array 20 not_emptygtarray请选择内容模型 max_length gtarray3 内容模型ID不得超过3字 节 21 is_numericgtarray内容模型ID格式不正确 min gtarray1 请选择内容模型 max 22 gtarray255 内容模型ID不得大于255 function test data 23 arraycatidgt1 titlegt标题 //插入数据并返回主键ID id 24 this-gtinsertdata this-gtcatid 1 this-gttitle 标题 id 25 this-gtinsert data arraycatidgt1 titlegt修改标题 //更新数据 26 this-gtupdatedata quotcontentididquot 27 this-gtwherequotcontentididquot-gtupdatedata this-gtcontentid 1 28 this-gtcatid 1 this-gttitle 标题 id this-gtupdate //设置字段值 29 this--gtset_fieldcatid 1 contentid1 //字段值加一 this-gtset_incpv 30 contentid1 //字段值减一 this-gtset_deccomment_count contentid1 31 //查询数据 data this-gtselectquotcatid1quot contentid title contentid 32 desc //分页数据 data this-gtpagequotcatid1quot contentid title contentid 33 desc 1 20 //取得一条记录 r this-gtgetquotcontentid1quot contentid title 34 //取得主键值为1的一条记录 r this-gtget1 this-gtcontentid 1 r 35 this-gtget //取得主键值为 123 的多条记录 data this-gtselect123 36 contentid title contentid desc data this-gtselectarray1 2 3 37 contentid title contentid desc //可传数组 //按字段值取得一条记录 r 38 this-gtget_bycontentid 1 contentid title r 39 this-gtget_by_contentid1 contentid title //按字段值取得多条记录 data 40 this-gtgets_bycatid 1 contentid title contentid desc data 41 this-gtgets_by_catid1 contentid title contentid desc //取得符合条件的字段 值 42 title this-gtget_fieldtitle quotcontentid1quot //取得符合条件的字段值数组 array 43 this-gtgets_fieldtitle quotcatid1quot //计算符合条件的记录数 count 44 this-gtcountquotcatid1quot //取得主键 primary this-gtprimary //判断字段值是否存 在 45 this-gtexistscontentid 1 //连写查询多条记录 data this-gtfieldcatid 46 title-gtwherecatid1-gtordercontentid 47 desc-gtlimit10-gtselect //连写查询一条记录 r this-gtfieldcatid 48 title-gtwherecontentid1-gtget //复制一条记录 newid 49 this-gtcopy_by_id1 //删除数据 this-gtdeletequotcontentididquot //删除主键值为1的数 据 50 this-gtdelete1 this-gtcontentid 1 this-gtdelete //删除主键值为 123 51 的数据 this-gtdelete123 this-gtdeletearray1 2 3 //可传数组 52 //按字段值删除数据 this-gtdelete_bycontentid 1 模板1、后台视图在控制器中可以直接调用模板对象 this-gtview 1 //后台视图 this-gtview-gtassignvarname 2 value//注册变量 this-gtview-gtassignarray//把数组注册为变量 3 this-gtview-gtdisplaycategory/index//显示view/category/index.
php模板 data 4 this-gtview-gtfetchcategory/index//获取view/category/index.
php 模板输出内容后台模板嵌套: 1 this-gtview-gtdisplayheader system //嵌套视图 2 ./apps/system/view/header.
php2、前台模板在控制器中可以直接调用模板对象 this-gttemplate 1 //前台模板 this-gttemplate-gtassignvarname 2 value //注册变量 this-gttemplate-gtassignarray //把数组注册为变量 3 this-gttemplate-gtdisplaysystem/index.html //显示system/index.html 模板 3 this-gttemplate-gtdisplaysystem/index.html //显示system/index.html 模板 4 data this-gttemplate-gtfetchsystem/index.html //获取system/index.html 5 模板输出内容模板嵌套template header.html判断语句if c 1 显示 A elseif c 2 显示 B else 显示 C /if循环loop array k v 键:k 值:v /loop函数str_cuttitleurlsystem/seccode/image常量ADMIN_URL 后台地址APP_URL 动态地址IMG_URL 公共图片、JS、CSS地址UPLOAD_URL 附件地址WWW_URL html地址变量_userid 用户ID_username 用户名_groupid 用户组ID_roleid 角色ID配置CONFIGcharset 字符集应用设置SETTINGsitename 网站名称db标签相关文章示例: 1 db sqlquotSELECT FROM table_related WHERE 2 contentidcontentid AND apiid1quot lta hrefquothttp://wiki.cmstop.com /7Brurl7Dquotgtrtitlelt/agtrtime /db文章列表页示例: 1 db sqlquotselect from table_content where 2 catidcatid AND modelid1 AND status6 order by published descquot 3 sizequotpagesizequot pagequotpagequot lta hrefquothttp://wiki.cmstop.com/7Brurl7Dquotgt rtitlelt/agtdaten月j日 H:i 4 rpublished /db pagestotal page pagesize 2 urlrulecontent 标签示例: 1 content catidquot4quot modelidquot1quot orderbyquotpublished desc 2 pv descquot pagequotpagequot sizequot8quot lta hrefquothttp://wiki.cmstop.com/7Brurl7Dquotgt rtitlelt/agt dateY-m-d 3 rpublished /content pagestotal page 1标签参数说明:1、调用条件catid:栏目ID,多个ID用“”隔开modelid:内容模型ID,多个ID用“”隔开sourceid:来源ID,多个ID用“”隔开createdby:创建人ID,多个ID用“”隔开weight:权重范围,weightquot60quot 表示权重值等于 60,weightquot60quot 表示权重值大于 60,weightquot60quot 表示权重值小于 60,weightquot60100quot 表示权重值大于 60 且小于 100published:发布时间范围,publishedquot2009-11-10quot 表示调用发布时间为2009年11月10日的内容,publishedquot2009-11-10quot 表示调用发布时间大于2009年11月10日的内容,publishedquot2009-11-10quot 表示调用发布时间小于2009年11月10日的内容,publishedquot2009-11-102009-11-30quot 表示调用发布时间大于2009年11月10日且小于2009年11月30日容,publishedquot2009-11-102009-11-30quot 表示调用发布时间大于2009年11月10日且小于2009年11月30日的内容,publishedquot1quot 表示调用发布时间1天以内的内容tags:关键词,多个关键词用“”隔开,例如:tagsquot福布斯权力quot2、排序方式orderby:排序方式,多个“”隔开,例如: orderbyquotpublished desc pv descquot3、结果数及分页offset:数据库查询结果偏移值(必须是正整数),默认值为 0size:行数(必须是正整数)page:当前页码(必须是正整数)4、返回值变量return:返回结果变量名,默认为 r5、输出处理函数str_cutrtitle 50 ...截取标题为50个字节dateY-m-d rpublished日期格式处理,产生 2009-11-15 格式的日期thumbrthumb 100 100自动压缩缩略图为宽100像素,高100像素pagestotal page pa.
上一篇:
程序员面试题
下一篇:
配电自动化系统计算机网络及其支持软件的体系结构