TinkPHP二次开发教程文档
- 格式:doc
- 大小:16.50 KB
- 文档页数:2
二次开发技术文档了解系统结构程序为MVC 3层结构,模型/ 视图/ 控制器。
●模型是前后台公用。
完成业务逻辑,所有的数据库操作,文件等资源调用,都由此层实现。
●控制器则是前后台独立。
负责业务模型的调用,拼接,变量的转换等等。
●视图层采用类似smarty的实现。
在任何时候都有一个全局变量$system指向唯一的一个内核类:core/kernel.php控制器负责所有的变量的转换,包括对外界的变量转换。
像胶水一样粘合各个业务model,并在其中的数据交互过程中做一些数据转换过程。
最终将变量抛到模板层。
模板层负责编译成html输出,这里我们创建了大量的smarty插件来减少开发者的重复工作量。
结构图公共类图公共函数库公共函数库位于/core/func_ext.php,它在内核加载时首先被加载,对全系统有效。
其中包含若干php5函数的php4模拟版本:●file_put_contents●json_encode●json_decode●ftp_chmod●array_diff_key●http_build_query运行过程商派Commerce B2B标准版前后台调度都分别通过各自目录下一个名为index.php的入口文件进行,入口文件接受控制器、方法等的输入参数,调度给对应的控制器方法执行并输出结果。
index.php会调用kernel。
Kernel基础类提供模型对象加载,插件入口,错误处理,设置管理,输入输出,第三方类库加载等基础服务。
前后台及安装入口程序在初始化时,都会初始化一个对应的内核类,这个类在前台是shopCore.php,后台时是adminCore.php。
这两个文件都是继承core/kernel.php文件。
该内核类首先会形成一个名为system的指向自身的全局对象,然后根据传入参数调用对应的控制器方法运行。
控制器层与模型层都会产生对该全局system对象的调用来使用基础服务。
并且控制器和模型层在自身被实例化之后都可以使用$this->system来引用内核对象。
二次开发技巧如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过“MY_*.php”的形式进行二次开发。
例如您要对改phpcms/mood/index.php进行二次开发。
您可以在与index.php同级的目录下建立”MY_index.php”<?phpclass MY_index extends index{function __construct() {parent::__construct();}……your code}这样当您通过url访问index控制器的时候,系统会默认指向MY_index.php 并且原文件的方法将被继承,可以直接使用。
系统配置文件文件路径:根目录/caches/configsdatabase.php 数据库配置文件system.php 系统配置文件route.php 路由配置文件调用方法如调用系统配置中的web_path:pc_base::load_config('system', web_path ');CMS入口文件:PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
入口程序是在前期处理用户请求的引导程序。
它是唯一一个可以被最终用户可以直接请求运行的。
文件路径:根目录/index.php<?phpdefine('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);include PHPCMS_PATH.'/phpcms/base.php';pc_base::creat_app();?>这段代码首先加载了 phpcms 框架的引导文件 base.php,然后它根据指定的配置文件建立了一个 Web 应用实例并运行。
TP开发手册完整版:系统特性ThinkP HP是一个性能卓越并且功能丰富的轻量级PHP开发框架,本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。
从1.*版本开始就放弃了对PHP4的兼容,因此整个框架的架构和实现能够得以更加灵活和简单。
2.0版本更是在之前的基础上,经过全新的重构和无数次的完善以及改进,达到了一个新的阶段,足以达到企业级和门户级的开发标准。
ThinkP HP值得推荐的特性包括:✧类库导入:ThinkP HP是首先采用基于类库包和命名空间的方式导入类库,让类库导入看起来更加简单清晰,而且还支持冲突检测和别名导入。
为了方便项目的跨平台移植,系统还可以严格检查加载文件的大小写。
✧URL模式:系统支持普通模式、PATHIN FO模式、REWRIT E模式和兼容模式的URL方式,支持不同的服务器和运行模式的部署,配合URL路由功能,让你随心所欲的构建需要的URL地址和进行SEO优化工作。
✧编译机制:独创的核心编译和项目的动态编译机制,有效减少OOP开发中文件加载的性能开销。
ALLINO NE模式更是让你体验飞一般的感觉。
✧ORM:简洁轻巧的ORM实现,配合简单的CURD以及AR模式,让开发效率无处不在。
✧查询语言:内建丰富的查询机制,包括组合查询、复合查询、区间查询、统计查询、定位查询、动态查询和原生查询,让你的数据查询简洁高效。
✧动态模型:无需创建任何对应的模型类,轻松完成CURD操作,支持多种模型之间的动态切换,让你领略数据操作的无比畅快和最佳体验。
✧高级模型:可以轻松支持序列化字段、文本字段、只读字段、延迟写入、乐观锁、数据分表等高级特性。
【必看】微擎应⽤模块⼆次开发⽂档和初级教程⼿册01.微擎的应⽤模块⽂件夹是addons,所有微擎应⽤模块都在这个⽂件夹⾥⾯。
02.运⾏环境推荐PHP版本5.6以上,mysql5.6,操作系统最好是Linux(centos)。
03.微擎允许对外公开访问的⽂件,就三个,分别是根⽬录api.php(微信开发者URL地址),/web/index.php(电脑端),/app/index.php(⼿机端)。
04.微擎的数据库等配置信息,放置在:/data/config.php⽂件中。
05.在微擎的manifest.xml配置⽂件中,direct的属性值要设置为0,⽐如:<entry * direct="0">,如果设置成1,有可能出现不经过⾝份权限验证,就可以直接访问。
06.微信开发者URL地址那⾥接收到微信推送过来的数据,主要⽤processor.php⽂件来响应。
07.addons/zhiwu55com/template/*,这个⽂件夹下⾯都是电脑端的模块⽂件。
08.addons/zhiwu55com/template/mobile/*,这个⽂件夹下⾯都是⼿机端的模块⽂件,⽐如:链接应⽤⼊⼝的那些页⾯模块⽂件,都在这个⽂件夹下⾯。
09.微擎的数据表,默认以ims_开头。
10.常量:IA_ROOT,微擎程序安装⽬录,⽰例值:D:/wwwroot/wwwzhiwu55cn,注意:返回的值最后没有斜杠。
11.常量:ATTACHMENT_ROOT,微擎程序附件⽬录,⽰例值:D:/wwwroot/wwwzhiwu55cn/attachment12.常量:MODULE_ROOT,当前模块⽬录,⽰例值:D:/wwwroot/wwwzhiwu55cn/addons/hzw_zhiwu13.当需要引⼊include⽂件的时候,尽量以IA_ROOT为基准路径引⼊,⽐如:include_once IA_ROOT .'/addons/wwwzhiwu55cn/inc/hzw.class.php'14.$_W(⼤写W),是系统中最为重要的全局变量,微擎系统中很多常⽤的数据都存储在这个变量之中15.$_GPC,全局请求变量,获取 $_GET,$_POST,$_COOKIES 中的变量,即$_GPC=array_merge($_GET,$_POST,$_COOKIES);16.$_W[‘siteroot’],⽹站URL根⽬录,⽰例值:/17.$_W[‘siteurl’],原始链接,⽰例值:/web/index.php?m=xxx&c=yyyy&do=hzw,即当前浏览器地址栏那⾥的地址。
thinkphp 开发手册ThinkPHP是一个开源的PHP框架,被广泛应用于Web应用的开发中。
它提供了一套丰富的功能和灵活的架构,使得开发人员能够更高效地构建和维护现代化的应用程序。
本文将介绍ThinkPHP的开发手册,包括框架的概述、安装配置、基本用法、高级特性等内容。
一、概述ThinkPHP是中国首个开源的PHP企业级开发框架,由中国最大的PHP开源社区——PHPHub团队开发和维护。
它是基于MVC模式设计的,具有良好的扩展性和高性能。
ThinkPHP采用了简洁的代码风格和规范,使得团队协作更加高效。
二、安装配置1.下载你可以从ThinkPHP的官方网站下载最新版的框架,也可以使用Composer来安装。
在下载之前,建议先阅读官方的文档,了解最新的版本特性和要求。
下载后,将框架解压到你的Web服务器目录下。
2.配置在框架的根目录中,有一个名为think的PHP文件,它是整个框架的入口文件。
你需要将Web服务器的文档根目录指向这个文件。
接下来,你需要在应用目录下创建一个名为config的目录,并在其中创建一个名为config.php的文件。
这个文件是框架的配置文件,你可以在其中设置数据库连接、路由规则等。
三、基本用法1.路由ThinkPHP的路由系统非常灵活,可以通过配置文件或者注解的方式进行定义。
你可以将URL映射到指定的控制器和方法,也可以将URL 参数传递给对应的方法。
路由系统支持正则表达式,可以满足你各种复杂的路由需求。
2.控制器在ThinkPHP中,控制器负责处理来自用户的请求,并返回响应结果。
你可以在应用目录下的controller目录中创建控制器文件,并定义各种方法。
控制器的方法可以通过URL来访问,也可以通过控制器的内部调用来使用。
控制器还可以接收用户传递的参数,并进行相应的处理。
3.模型模型是数据处理的关键,它负责与数据库进行交互,执行各种数据库操作。
在ThinkPHP中,你可以通过继承一个基类模型来创建自己的模型类,然后在控制器中使用它。
PHPCMS V9 二次开发文档文件目录结构根目录| - 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 图标PC标签使用说明在PHPCMS V9中我们正式开始需要PC标签做为数据的获取的方式。
PC标签是以下面的方式进行声明{pc:content action="lists" cache="3600" num ="20" page="$page"}{/pc}PC标签必须以{pc}开头,并以{/pc}结尾的代码片段。
当然不以{/pc}结尾并不会引起程序致命性的错误,导致程序无法继续运行。
以下为两种已知可能会出现的问题:1.当网页中出现两个PC标签时,可能会使得没有闭合的PC标签之后的PC标签数据和其混乱。
2.在后台可视化编辑时,可能出现网页结构错乱的问题。
PC标签分析:PC标签中{pc:}冒号之后跟随的为模块名。
如上面的例子中调用的是内容模型的PC标签。
actio n="list"这个形式所代表的是参数。
二次开发流程范文二次开发是指在现有软件或硬件基础上进行二次开发,以满足特定需求的一种软件开发方式。
在进行二次开发之前,需要明确的开发流程,以确保开发过程的顺利进行。
下面是一个1200字多的二次开发流程的详细介绍。
一、需求分析在二次开发之前,首先需要对需求进行分析。
这个阶段的目标是要明确用户的需求,并将其转化为具体的开发任务。
需求分析阶段包括以下几个步骤:1.收集用户需求:与用户进行沟通,了解他们的需求和期望,并记录下来。
2.需求分类和整理:对用户需求进行分类和整理,将其分为功能需求和非功能需求。
3.需求确认:与用户进行确认,确保对需求的理解没有偏差。
4.可行性分析:对需求进行可行性分析,评估需求是否能够实现,并提供给用户反馈。
二、设计阶段在需求分析完成后,需要进行详细的设计工作。
设计阶段的目标是要根据需求分析的结果,设计出满足需求的软件架构和功能模块。
1.系统架构设计:根据需求设计系统的整体架构,确定系统的主要组成部分和各部分之间的关系。
2.功能模块设计:根据系统架构设计,将系统功能划分为多个模块,并设计每个模块的功能和接口。
3.数据库设计:根据功能模块设计,设计数据库的结构和关系,确定数据的存储方式和访问方式。
4.用户界面设计:设计用户界面的布局、样式和交互方式,使用户能够方便地使用系统。
三、编码实现在设计完成后,需要进行编码实现。
编码实现阶段的目标是要将设计阶段的结果转化为具体的编码实现。
1.编码环境准备:搭建合适的开发环境,包括编译器、开发工具和测试工具。
2.编码规范定义:制定编码规范,确保编码风格的统一和代码的可读性。
3.编码实现:根据设计阶段的结果进行编码实现,使用合适的编程语言和开发工具。
4.单元测试:对每个编码模块进行单元测试,确保其功能的正确性和稳定性。
四、系统集成测试在编码实现完成后,需要对整个系统进行集成测试。
系统集成测试的目标是要检查系统各个模块之间的接口和数据传递是否正常,以及整个系统是否满足需求。
二次开发培训文档一、ECOLOGY系统框架结构1、主要的程序结构EcologyClassbean 存放编译后的CLASS文件js 系统中使用的JA V ASCRIPT和VBSCRIPT脚本Css 系统中JSP页面使用的样式ImagesImages_faceImages_frame 系统中使用的图片的存放目录Crm..Workflow 该功能分文件夹存放每个功能的文件WEB-INFProp 系统配置文件存放Service 系统的接口配置文件的存放二、说明一个JSP页面,一个JA V A程序的基本组成,如何阅读JSP页面1、一个jsp页面通常需要包含什么内容2、如何阅读一个JSP页面由于ECOLOGY系统支持多语言,因此在JSP页面上一般不出现中文,全部使用标签的形式来显示中文:比如:在IE上显示“姓名”那么在JSP页面中将通过<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>这样的形式来表示,其中的数字413就是表示姓名,同时可以通过“select labelname from htmllabelinfo where indexid=413 and languageid=7”来获取到“姓名”这个显示名称,其中languageid=7表示中文显示名称,languageid=8表示英文显示名称.3、JA V A程序的基本组成在ECOLOGY中开发JA V A程序建议继承weaver.general. BaseBean,在BaseBean 中主要封装了两个方法:写日志文件,获取配置文件中的参数值。
三、几个常用的底层类的说明最基本的底层类,数据库操作类,上传下载文件,如何构建缓存,基本的工具类Ecology系统底层包开发指南.doc四、页面权限控制的说明,怎样在页面中引用权限,怎么样新增一个权限,如何在新开发的模块上引入权限控制在这一部分将描述:新增的页面如何保持和ECOLOGY的风格保持一致;新增的页面上引用ECOLOGY中的权限;新增的页面上引用新的ECOLOGY中还没有的权限;1、可以根据<泛微协同商务系统(Ecology)_JSP式样编写指南>保证新开发的页面在风格上和原有系统保持一致泛微协同商务系统(Ecology)_JSP式样编写2、使用ECOLOGY分页控件实现数据的分页显示泛微分页控件使用帮助及规范.doc3、引用系统中的权限首先从系统的权限设置中找到需要引用的权限名称,如下如找到“地址类型维护”这个权限,其ID为41,然后通过“select rightdetailfrom systemrightdetail where rightid=41”得到其rightdetail=“AddAddressType:Add”,那么在JSP页面中通过如下语句,就可以使得只有的“地址类型维护”这个权限用的用户可以查看该页面<% if(!HrmUserVarify.checkUserRight("AddAddressType:Add ", user) ) {response.sendRedirect("/notice/noright.jsp");return;}%>4、新增新的权限控制新功能的查看新增功能模块添加权限控制.d o c五、系统的人员组织结构的介绍1、主要数据结构HrmResource(人员基本信息表).doc HrmSubCompany(分部信息表).docHrmDepartment(部门信息表).doc2、如何从缓存中获取人员信息(对三个缓存的简单介绍)六、对流程,文档数据的存放说明(主数据,明细数据,一般信息等在数据库中如何存放,主要为了考虑报表的问题)1、文档的主要数据结构文档信息的主要存储表DOCDETAIL:文档信息存储表,主要存放文档的基本信息DOCDETAILCONTENT: 文档内容存放表(如果是ORACLE数据库,如果文档的类型是HTML文档,那么文档内容存放在该表中,SQLSERVER数据库不用该表)DOCIMAGEFILE:文档,附件关联表,此表记录文档和附件(WORD,EXCEL格式文档在数据库中按照附件格式存放)的关系(即一个文档关联了几个附件)IMAGEFILE:附件路径存放表,此表记录了文档的附件(或者WORD,EXCE)存放在文件服务器上的位置DOCSHARE:文档共享表SHARINNERDOC:文档共享明细表,此表存放了该表具体共享给那些用户了DocDetail.doc ImageFile.doc DocImageFile.doc shareinnerdoc.docDocShare.doc2、流程的主要数据结构这里主要介绍流程的数据存放结构及如果通过流程类型获取到流程的字段信息,流程的载体分为表单和单据两类,表单和单据的区别在于:所有使用表单的流程数据存放在同一个表中,而单据每个单据对应着一张独立的数据表1、表单一、对于表单而言流程的数据信息存放在三个数据表中Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等Workflow_form:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联Workflow_formdetail:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联二、通过流程的类型如何获取该流程使用了Workflow_form和Workflow_formdetail表中哪些字段在Workflow_form和Workflow_formdetail表中存放了大量字段,所有使用表单的流程的字段都在这两个表中,如何获取每个流程使用了那些字段呢?A、找到流程的类型ID,假定为wfidB、找到流程用了哪个表单select formid from workflow_base whereid=wfid and isbill=’0’C、获得该表单用到了哪些主字段:select(select fieldlable from workflow_fieldlable where workflow_fieldlable.fieldid=workflow_formfield.fieldid and langurageid=7andworkflow_fieldlable.formid=workflow_formfield.formid)as name,(select fieldname from workflow_formdictwhere id=fieldid)from workflow_formfield whereformid=上面获取的FORMID and (isdetail is null orisdetail=’’)哪些明细字段:select(select fieldname fromworkflow_formdictdetail where id=fieldid)fromworkflow_formfield where formid=上面获取的FORMID andisdetail=’1’2、单据对于表单而言流程的数据信息存放在三个数据表中Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等Workflow_form:该表只存放Workflow_requestbase和单据表之间的关系信息各单据主表:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联,如何获取该表呢:A、找到流程的类型ID,假定为wfidB、找到流程用了哪个单据select formid form workflow_basewhere id=wfid and isbill=’1’C、通过单据ID可以获取到该单据使用的字段Select * from workflow_billfield where billid= formidD、通过单据ID找到其用了那个表存储流程主信息,那个表存储流程明细信息select tablename from workflow_bill where id= formidselect tablename from workflow_billdetailtablewhere id= formid各单据主明细表:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联3、流程的其他信息表结构流程处理人情况表Workflow_currentoperator:此表存储了流程当前未操作者,已操作者等信息workflow_requestlog 流程处理意见表:此表存储了流程处理人处理过的审批意见workflow_requestviewlog 流程的查看日志workflow_requestbase.doc workflow_bill.doc workflow_base.doc workflow_currentoperator.docworkflow_requestLog.doc七、如何新建,定制一个客户化的单据新建单据的好处,在于可以比较容易到把新建单据表中的信息和其他信息进行一些必要的操作八、系统已经有可开发的接口的培训1、短信接口可以通过该接口实现其他短信网关或者硬件短信设备进行在OA中发送短信的操作通用短信接口实现方式及使用说明.doc2、单点登录接口ECOLOGY提供了通过用户映射和模拟其他系统登录窗体的方式实现多系统之间的单点登录接口Ecology系统接口指南---单点登录篇.doc3、数据源和计划任务接口在ECOLOGY系统中,可以定义多个其他系统的数据连接,通过该连接可以和其他系统的数据库直接连接,同时也可以设置“计划任务”,系统根据设置定时制定执行设定的计划。
PHPCMS二次开发流程(实例)如下图是官方文档给出的phpcms二次开发的流程:本文以创建一个答题模块为实例,进行逐一讲解。
创建数据库和数据表:本模块是在phpcms v9框架上开发的,但不使用phpcms数据库,例如这里我新建一个数据库,名为:yixin,所有表默认前缀yx_。
新建表:yx_user表yx_user栏目名称字段名类型可否为空说明用户编号userid int N 主键、AI 用户名username varchar(20) N用户密码password varchar(32) N用户昵称nickname varchar(20) Ndatetime N注册时间regtime注册ip regip varchar(15) N上次登录时间lasttime datetime N 默认为:0000-00-0000:00:00上次登录ip lastip varchar(15) N 默认:0 登录次数loginnum smallint N 默认:1 用户邮箱email varchar(32) N用户组类型groupid tinyint N用户状态status tinyint N 默认:1 用户答对题数rightnum smallint N 默认:0 用户真实姓名realname varchar(50) Y 默认:0CREATE TABLE`yx_user`(`userid`INT(11)NOT NULL AUTO_INCREMENT,`username`VARCHAR(20)NOT NULL,`password`VARCHAR(32)NOT NULL,`nickname`VARCHAR(20)NOT NULL,`regtime`DATETIME NOT NULL,`regip`VARCHAR(15)NOT NULL,`lasttime`DATETIME NOT NULL DEFAULT'0000-00-00 00:00:00',`lastip`VARCHAR(15)NOT NULL DEFAULT'0',`loginnum`SMALLINT(6)NOT NULL DEFAULT'1',`email`VARCHAR(32)NOT NULL,`groupid`TINYINT(4)NOT NULL,`status`TINYINT(4)NOT NULL DEFAULT'1',`realname`VARCHAR(50)NOT NULL DEFAULT'0',`rightnum`SMALLINT(6)NOT NULL DEFAULT'0',PRIMARY KEY(`userid`))ENGINE=MYISAM;新建表:yx_question表yx_question栏目名称字段名类型可否为空说明题目编号questionid int N 主键、AI题目内容content mediumtext N题集setid int N 默认为:0正确选项answer0 varchar(50) N错误选项1 answer1 varchar(50) N错误选项2 answer2 varchar(50) N错误选项3 answer3 varchar(50) N答案说明description varchar(50) Y 默认:0添加日期addtime datetime N出题人userid int N与yx_user表的userid关联审核人adminid int N 默认为:0,与yx_admin表的adminid关联审核时间verifytime datetime N题目状态status tinyint N 默认为:0CREATE TABLE`yx_question`(`questionid`INT(11)NOT NULL AUTO_INCREMENT,`content`MEDIUMTEXT NOT NULL,`setid`INT(11)NOT NULL DEFAULT'0',`answer`VARCHAR(50)NOT NULL,`answer1`VARCHAR(50)NOT NULL,`answer2`VARCHAR(50)NOT NULL,`answer3`VARCHAR(50)NOT NULL,`description`VARCHAR(50)NOT NULL DEFAULT'0',`addtime`DATETIME NOT NULL,`userid`INT(11)NOT NULL,`adminid`INT(11)NOT NULL DEFAULT'0',`verifytime`DATETIME NOT NULL DEFAULT'0000-00-00 00:00:00',`status`TINYINT(4)NOT NULL DEFAULT'0',PRIMARY KEY(`questionid`))ENGINE=MYISAM新建表:yx_question_set表yx_question_set栏目名称字段名类型可否为空说明题集编号setid int N 主键、AI 题集名称setname varchar(50) N题集描述description text N题集状态enabled tinyint(1) N 0:不可用;1:可用题集题数questionnum smallint N 默认:0CREATE TABLE`yx_question_set`(`setid`INT(11)NOT NULL AUTO_INCREMENT,`setname`VARCHAR(50)NOT NULL,`description`TEXT NOT NULL,`enabled`TINYINT(1)NOT NULL DEFAULT'0',`questionnum`SMALLINT(6)NOT NULL DEFAULT'0',PRIMARY KEY(`setid`))ENGINE=MYISAM新建表:yx_user_select_set表yx_user_select_set栏目名称字段名类型可否为空说明编号id int N 主键、AI 用户编号userid int N题集编号setid int NCREATE TABLE`yx_user_select_set`(`id`INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `userid`INT NOT NULL,`setid`INT NOT NULL)ENGINE=MYISAM;新建表:yx_user_answer_record表yx_user_answer_record栏目名称字段名类型可否为空说明记录编号id int N 主键、AI问题编号questionid int N 与yx_question表的questionid关联答题结果check tinyint N 0:错误;1:正确答题人userid int N 与yx_user表的userid关联答题时间answertime datetime NCREATE TABLE`yx_user_answer_record`(`id`INT NOT NULL AUTO_INCREMENT PRIMARY KEY,`questionid`INT NOT NULL,`check`TINYINT NOT NULL,`userid`INT NOT NULL,`answertime`DATETIME NOT NULL)ENGINE=MYISAM;新建表:yx_admin表yx_admin栏目名称字段名类型可否为空说明管理员编号adminid int N 主键、AI管理员名adminname varchar(20) N管理员密码password varchar(32) N管理员类型roleid smallint N 默认:0上次登录时间lasttime datetime N 默认:0000-00-0000:00:00 上次登录ip lastip varchar(15) N 默认:0管理员邮箱email varchar(40) N 默认:0管理员真实姓名realname varchar(50) NCREATE TABLE`yx_admin`(`adminid`INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `adminname`VARCHAR(20)NOT NULL,`password`VARCHAR(32)NOT NULL,`roleid`SMALLINT NOT NULL DEFAULT'0',`lasttime`DATETIME NOT NULL DEFAULT'0000-00-00',`lastip`VARCHAR(15)NOT NULL DEFAULT'0',`email`VARCHAR(40)NOT NULL DEFAULT'0',`realname`VARCHAR(50)NOT NULL)ENGINE=MYISAM;新建表:yx_admin_role表yx_admin_role栏目名称字段名类型可否为空说明类型编号roleid smallint N 主键、AI 类型名称rolename varchar(50) N类型描述description text N类型状态enabled tinyint(1) N 0:不可用;1:可用CREATE TABLE`yx_admin_role`(`roleid`INT NOT NULL AUTO_INCREMENT PRIMARY KEY,`rolename`VARCHAR(50)NOT NULL,`description`TEXT NOT NULL,`enabled`TINYINT(1)NOT NULL)ENGINE=MYISAM;创建模块目录:PHPCMS v9框架中的模块,位于phpcms/modules目录中每一个目录称之为一个模块,如果要创建一个模块,只要在phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。
ThinkPhp开发⽂档(基础篇)ThinkPhp开发⽂档查询案例//获取user列表public function get_user_list(){//1.⾸先获取⽤户id,⽤户已有id、邮箱等属性,在Base类中已经进⾏过邮箱校验,其余类继承Base即可$user_id = Session::get('user_id');//2.定义列表,运⽤框架语法查询,注意,卫星系统⼀共有三个库,frss(主库)、fess_csg(副库)、frss_ific(副库)//调⽤主库案例$user_list = Db::table('user') //默认是主库->field('id','name','dapartment') //查询哪些列->where('del','=','0') // 查询条件->where('id','<>',$user_id) //查询条件,条件之间默认为and链接->select(); //定义查询语句return json ('code'>=0,'msg'=>'查询成功',date=>$user_list) //返回以json的格式返回,包括code、msg、data//此为副库查询案例/* $data=Db::connect('db_cfg')->table('correspondence_template')->field('id,template_name,hanjianleixing,shouhanjigou,jigoudizhi,mubanyuyan,text')->select();return json(['code' => 0, 'msg' => '查询成功','data'=>$data]);*/}注意点⾸先获取⽤户id,⽤户已有id、邮箱等属性,在Base类中已经进⾏过邮箱校验,其余类继承Base即可定义列表,运⽤框架语法查询,注意,卫星系统⼀共有三个库,frss(主库)、fess_csg(副库)、frss_ific(副库)返回以json的格式返回,包括code、msg、datafind⽅法查询结果不存在,返回null,否则返回结果数组select⽅法查询多条数据更新案例public function update_user(){$share_id=Request::param('share_id'); //Request::param('a') 获取只能获取单个参数,$data = Request::only(['a','b'])获取多个参数$id=Request::param('id');$user_id=Session::get('user_id');$data=Db::table('correspondence_manage')->where(['id'=>$id,'user_id'=>$user_id,])->update(['share_to_user_id'=>$share_id]);return json(['code'=>0,'msg'=>'设置成功']);}注意Request::param('a') 获取只能获取单个参数,$data = Request::only(['a','b'])获取多个参数其他同上删除案例public function del_file(){$file_id=Request::param('id');$user_id=Session::get('user_id');$file_path=Db::table('coordination_task_file')->where([['id','=',$file_id],['user_id','=',$user_id]])->find();if($file_path){@unlink($file_path['ture_path']); //当添加到PHP中的表达式时,该表达式可能⽣成的任何错误消息都将被忽略Db::table('coordination_task_file')->delete($file_id);return json(['code'=>0,'msg'=>'删除成功']);}return json(['code'=>-1,'msg'=>'删除失败。
◆二次开发什么是二次开发?二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。
为什么要二次开发?随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司。
选择和应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障。
这就是我们常听的:站在巨人的肩膀上,你将看的更远。
所以国内很多公司需要二次开发的人才。
怎么做二次开发?第一,你要有这个开源产品的所用语言的语言基础,能看懂代码是最基本的。
第二,你要对这个开源产品的功能和使用要有比较熟悉,因为你熟悉了,你才知道一个需求下来,你要改什么,什么是系统自带的,大概要怎么改。
第三,你要熟悉这个开源产品的数据结构,代码结构,系统的框架结构,核心是哪里,附属功能是在哪里。
简单点说,就是数据库,代码逻辑,文件目录的熟悉。
第四,根据你的需求,然后利用开源产品的内核,进行系统的扩展和修改,以达到你的需求介绍PHP的开源产品的二次开发的基本要求:第一,基本要求:HTML(必须要非常熟悉),PHP(能看懂代码,能写一些小系统,如:留言板,小型CMS),Mysql(至少会一种数据库),Javascript(能看懂,能改现成的一些代码),Div+Css(能进行界面的调整,明白CSS是怎么使用的)第二,熟悉开源产品的使用,比如 Dedecms,你要知道怎么登录,怎么新建栏目,怎么添加文章,模板标签的使用方法,模型的概念和使用方法等等一些功能第三,要熟悉这个开源产品的数据库结构,还要理解里面核心文件的内容,比如:数据库类怎么使用,常用的安全过滤是怎么做的,模板引擎又是怎么使用的等等一些核心内容。
还要知道这个开源产品的目录结构,就是说,你要知道哪是放模板的,哪里是做控制的,哪里是放样式的,等等第四,熟悉你的需求,对需求进行解读,然后确定如何对这个开源产品进行修改和扩展经过二次开发后,你能获取到的是什么呢?你能完成你的需求,你能积累经验,这里的经验有你自己的,也有别人的。
接口开发文档一、开发包目录结构1.1demo文件夹包含了sdk接口调用源代码,可供二次开发参考。
使用C++开发的MFC程序。
1.2dll文件夹包含了二次开发所需的所有动态库,demo编译好的exe文件需要放在该文件夹内才可以运行。
1.3include文件夹包含了二次开发所需要的头文件。
1.4lib文件夹包含了二次开发所需要的lib静态库。
1.5DSS二次开发指南(C++).pdf指导二次开发用户如何新建VS2005工程运行demo文件夹中的demo。
1.6Version.xmldpsdk开发包的程序版本信息。
1.7常见问题解答.pdf二次开发常见问题以及解决方式。
1.8大华平台SDK开发手册(C++版).chm二次开发接口使用说明。
二、术语和缩略语1、DPSDK:DSS平台二次开发SDK包2、CMS:中心管理服务5、web管理员端:在浏览器中输入DSS平台的ip即可打开管理员端6、CameraID:通道id,形如:10000010$1$0$07、DeviceID:设备id三、Demo操作方法3.1运行demo把“demo/bin/”目录下面的3个文件,如下图所示拷贝到“dll”文件夹下面,运行Test_DPSDK_Core.exe。
3.2登陆平台图 1 登陆界面登陆界面如图 1 所示,其中: IP:DSS 平台ip 地址;端口:9000;用户名:web 管理员端配置的用户;密码:web管理员端配置的用户对应的密码。
点击“登录”按钮,登陆平台。
登陆成功的界面如图2所示:1235图2 主界面上图选中的 5个模块分别是:1、组织树;2、实时视频;3、本地录像;4、云台操作;5、执行结果。
3.3主界面功能介绍3.3.1、组织树操作步骤:点击“加载所有组织结构”按钮加载组织结构是其他操作的前提,是为了获取 DSS平台上所有的设备信息。
3.3.2、实时视频模块操作步骤:1)确保已经成功加载组织结构。
2)输入CamID(通道ID)。
TinkPHP二次开发教程文档
文件目录结构
根目录
目录结构
|--Common 公共函数库存放一些在整个程序需要使用到的函数
|-- Images 图片目录
|-- Uploads 上传资源目录
|-- Index.php 前台主入口文件
|-- Pi.php 后台入口文件
|-- pigcms.sql 数据库文件
|-- PigCms -- |-- Lang 语言目录
|-- _Core Thinkphp官方程序所在目录(PigCms.php是thinkphp的程序的入口文件)
|-- Common 公共函数库
|-- Extend 扩展类库
|-- Lib -- |-- Behavior 行为扩展类库
|-- Widget 小工具,控件目录|-- Model 模型所在目录里面的模型主要用来做自动验证和自动填充
|-- ORG 些第三方的集成类,如:ip地址查询,地图接口,支付接口,天气接口等等
|-- Action -- |-- User 用户分组控制器目录
|-- Wap 3G网页功能控制器目录
|-- BackAction.class.php 后台控制器父类
|-- BaseAction.class.php 前台控制器父类
|-- UserAction.class.php 用户分组控制器父类
|-- Home 前台控制器目录
|-- System 后台控制器目录
|-- PigData -- |-- logs 缓存文件和错误日志所在目录
|-- upload 上传资源目录
|-- conf 配置文件所在目录
|-- Tpl -- |-- Home 前台模板目录当前默认模板是pigcms 模板文件分割符号是“_”。