




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二次开发什么是二次开发?二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核。为什么要二次开发?随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司。选择和应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障。这就是我们常听的:站在巨人的肩膀上,你将看的更远。所以国内很多公司需要二次开发的人才。怎么做二次开发?第一,你要有这个开源产品的所用语言的语言基础,能看懂代码是最基本的。第二,你要对这个开源产品的功能和使用要有比较熟悉,因为你熟悉了,你才知道一个需求下来,你要改什么,什么是系统自带的,大概要怎么改。第三,你要熟悉这个开源产品的数据结构,代码结构,系统的框架结构,核心是哪里,附属功能是在哪里。简单点说,就是数据库,代码逻辑,文件目录的熟悉。第四,根据你的需求,然后利用开源产品的内核,进行系统的扩展和修改,以达到你的需求介绍PHP的开源产品的二次开发的基本要求:第一, 基本要求:HTML(必须要非常熟悉),PHP(能看懂代码,能写一些小系统,如:留言板,小型CMS),Mysql(至少会一种数据库),Javascript(能看懂,能改现成的一些代码),Div+Css(能进行界面的调整,明白CSS是怎么使用的)第二, 熟悉开源产品的使用,比如 Dedecms,你要知道怎么登录,怎么新建栏目,怎么添加文章,模板标签的使用方法,模型的概念和使用方法等等一些功能第三, 要熟悉这个开源产品的数据库结构,还要理解里面核心文件的内容,比如:数据库类怎么使用,常用的安全过滤是怎么做的,模板引擎又是怎么使用的等等一些核心内容。还要知道这个开源产品的目录结构,就是说,你要知道哪是放模板的,哪里是做控制的,哪里是放样式的,等等现在的阶段:熟悉开源的框架第四, 熟悉你的需求,对需求进行解读,然后确定如何对这个开源产品进行修改和扩展经过二次开发后,你能获取到的是什么呢?你能完成你的需求,你能积累经验,这里的经验有你自己的,也有别人的。所谓别人的,就是在你做这个二次开发的时候,你能吸收到这个系统的精华,然后融入到你自己的思想里,你还能总结项目架构的经验。架构,架构,我喜欢。有句话说的好,就是:聪明的人会把别人的失败的经验当作自己的经验,而傻的人就是自己无数次体验失败后才作为自己的经验。二次开发不仅仅是开发,而更重要的是吸取精华,总结经验,理顺思路,少走弯路,提升自己。站在巨人的肩膀上,你将看的更远!DedeCMS二次开发 DedeCMS的二次开发为了让更多人了解二次开发,并更方便的了解DedeCMS的二次开发,下面将会简单的介绍关于DedeCMS二次开发的一些基础和大纲DedeCMS二次开发必备基础: 非常熟悉HTML 熟悉DIV+CSS的布局 扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用 熟悉MYSQL,掌握SQL语言 DedeCMS二次开发学习过程 理解CMS是什么 熟悉DedeCMS的功能(如:栏目的分类,文档管理,模型的使用,系统的设置等常用的功能) 掌握DedeCMS的模板标签使用及原理 DedeCMS目录结构分析熟悉每个文件夹里面主要装什么文件,这样在二次开发的时候知道在哪个文件夹下的什么文件修改目录结构摘要:./a 生成文件存放路径./data 缓存文件及数据中心/admin 管理后台数据/backupdata 备份数据/cache 缓存文件/enums 级别联动数据,JS,枚举类型的缓存文件/js 常用的JS/mark 水印相关文件/module 模块安装文件/rss Rss相关/sessions Session 存放路径/textdata 文本数据/tplcache 模板缓存/uploadtmp 上传文件缓存位置/ziptmp zip包解压缓存位置 DedeCMS文件结构分析熟悉每个文件的基本功能,方便做修改,知道每个文件的大概作用之后,可以方便的对文件进行修改文件结构摘要:common.inc.php 数据库配置文件config.cache.bak.php 后台系统配置备份config.cache.inc.php 后台系统配置文件缓存downmix.data.php 采集混淆缓存文件mysql_error_track.inc MYSQL错误志safequestions.php 安全问题sitemap.html 站点地图sys_pay.cache.php 支付网关配置template.rand.php 随机模板设置 DedeCMS数据库结构分析,至少要熟悉每个表的作用熟悉每个表的作用,了解几个核心表的设计及字段的含义,方便拿到新的需求之后,能快速的判断是否加字段,还是新建表来处理。同时也能理解DedeCMS的数据库设计思想,把有用的设计思路加到自己的系统中。 DedeCMS的流程控制,及一些核心文件的解析熟悉一些登陆,注册,文档管理,权限控制,分类管理,模型设置等一些常用流程控制。对几个核心文件进行解剖,了解其编程技巧及安全机制 DedeCMS插件的开发(*式插件和内嵌式插件)熟悉两种插件的编写,插件的导入导出,插件搭配模型的使用Ecshop二次开发EcShop二次开发学习方法 近年来,随着互联网的发展,电子商务也跟着一起成长,B2B,C2C,B2C的电子商务模式也不断的成熟。这时催生出了众多电子商务相关的PHP开源产品。B2C方面有Ecshop,Zencart,Magento等国内外知名产品。下面我们就来简单介绍一下学习Ecshop二次开发的过程和要注意的一些东西:Ecshop二次开发必备基础: 非常熟悉HTML 熟悉DIV+CSS的布局 扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用 熟悉Smarty模板引擎 熟悉MYSQL,掌握SQL语言 Ecshop二次开发学习过程 熟悉电子商务基本概念 熟悉EcShop 的基本功能使用(商品类型,商品分类,商品属性设置,促销活动使用等) 掌握Ecshop的数据库结构和数据库设计思想 熟悉ER的模式,实体与关系的建立熟悉每个表的作用,了解几个核心表的设计及字段的含义,方便拿到新的需求之后,能快速的判断是否加字段,还是新建表来处理。同时也能理解Ecshop的数据库设计思想,把有用的设计思路加到自己的系统中 文件结构分析及代码分析熟悉一些登陆,注册,文档管理,权限控制,分类管理,商品类型等一些常用流程控制。对几个核心文件进行解剖,了解其编程技巧及安全机制 Ecshop文件结构分析:includescls_captcha.php: 验证码图片类includescls_ecshop.php: 基础类includescls_ecshop.php(56): 密码编译方法;includescls_rss.php: RSS 类includescls_smtp.php: SMTP 邮件类includesinc_constant.php: 常量includesinit.php: 前台公用文件includeslib_common.php: 公用函数库includeslib_goodscat.php: 前台公用函数库includeslib_insert.php: 动态内容函数库includeslib_main.php: 前台公用函数库includeslib_payment.php: 支付接口函数库includesiconvcls_iconv.php: 字符集转换类includesipcls_ip.php: IP 归属地查询类includesmodulesintegratesdiscuz.php: 会员数据处理类includesmodulesintegratesecshop.php: 会员数据处理类 Ecshop模板更换熟悉Smarty的精简版的使用,嵌入自己的界面,EcShop模板的跟换技巧 Ecshop二次开发实例中英文切换的功能,秒杀功能,京东商城模板的制作等 学习目的:1,会使用Ecshop进行二次开发2,会换普通的模板及一些功能的修改3,吸取里面的开发经验掌握基础知识-模仿里面的一些写法-修改里面的模式(形成自己的开发模式)掌握Ecshop里面的编程技巧及系统设计技巧缓存技术分析常见的PHP缓存技术分析概念版在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库-准备SQL查询-发送查询到数据库-取得数据库返回结果-关闭数据库连接。但数据库中有些数据是完全静态的或不太经常变动的,缓存系统会通过把SQL查询的结果缓存到一个更快的存储系统中存储,从而避免频繁操作数据库而很大程度上提高了程序执行时间,而且缓存查询结果也允许你后期处理。普遍使用的缓存技术数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存文件中获得。页面缓存:每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)内存缓存:在里就不介绍了,不是本文所要讨论的,只简单提一下:Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。dbcached 是一款基于 Memcached 和 NMDB 的分布式 key-value 数据库内存缓存系统。以上的缓存技术虽然能很好的解决频繁查询数据库的问题,但其缺点在在于数据无时效性,下面我给出我在项目中常用的方法:时间触发缓存:检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。设定时间内不去判断数据是否要更新,过了设定时间再更新缓存。以上只适合对时效性要求不高的情况下使用 ,否则请看下面。内容触发缓存:当插入数据或更新数据时,强制更新缓存。在这里我们可以看到,当有大量数据频繁需要更新时,最后都要涉及磁盘读写操作。怎么解决呢?我在日常项目中,通常并不缓存所有内容,而是缓存一部分不经常变的内容来解决。但在大负荷的情况下,最好要用共享内存做缓存系统。到这里PHP缓存也许有点解决方案了,但其缺点是,因为每次请求仍然要经过PHP解析,在大负荷的情况下效率问题还是比效严重,在这种情况下,也许会用到静态缓存。静态缓存这里所说的静态缓存是指HTML缓存,HTML缓存一般是无需判断数据是否要更新的,因为通常在使用HTML的场合一般是不经常变动内容的页面。数据更新的时候把HTML也强制更新一下就可以了。其实一个缓存系统涉及的问题是比较多的,我在这里只介绍一下我平时的缓存思路,并没有介绍利用软件来实现缓存和写出具体代码。如果您有什么好的解决方案也请在下面提出,让我们一起互相探讨。PHP使用函数调用命令php中使用exec,system等函数调用系统命令php的内置函数exec,system都可以调用系统命令(shell命令),当然还有passthru,escapeshellcmd等函数。在很多时候利用php的exec,system等函数调用系统命令可以帮助我们更好更快的完成工作。比如前二天笔者在批量处理.rar文件时exec就帮我了大忙了。今天整理一下常用的调用系统函数发出来和大家分享经验。注意:要想使用这二个函数php.ini中的安全模式必须关闭,要不然为了安全起见php是不让调用系统命令的。先看一下php手册对这二个函数的解释:exec - 执行外部程式语法 : string exec ( string command , array &output , int &return_var )说明 :exec( )执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。如果有给予参数array,则指定的数组将会被命令所输出的每一行填满,注意 : 如果数组先前已经包含了一些元素的话,exec( )将会把它附加在数组的后面,如果你不想要此函数附加元素的话,你可以在传递此数组给exec( )之前呼叫unset( )。如果有给予参数array和return_var,则传回执行的状态命令将会写到这个变量。注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。system - 执行外部程式并且显示输出语法 : string system ( string command , int &return_var )说明 :system( )执行给予的命令command,并且输出结果。如果有给予参数return_var,则执行命令的状态码将会写到这个变量。注意 : 如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd( )来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。注意 : 如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。如果PHP是运作成伺服器模组,在输出每一行后,system( )会试着自动地清除web伺服器的输出缓冲。成功则传回命令的最后一行,失败则传回false。如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru( )这个函数。这二个都是用来调用系统shell命令,不同点:exec可以把执行的结果全部返回到$output函数里(数组),$status是执行的状态 0为成功 1为失败systerm不需要提供$output函数,他是直接把结果返回出来,同样$return_var是执行的状态码 0为成功 1为失败关于开源开源最大的成功来源于Web开源运动广受欢迎,并且在软件开发史上写下了浓重一笔。但是它影响最深远的地方在哪呢?有史以来,最成功的开源“项目”又是什么呢?事实上,总体来看,Web不就是开源运动最大的成功么?可能最有名的例子就是隐藏域众多网站背后的LAMP,也就是Linux、Apache、MySQL和PHP。但当你仔细考虑后,你会发现更多。下面列出了Web得以运转的一些开源项目。Web browsers-网络浏览器在网络浏览器市场中,虽然微软的封闭源码软件IE浏览器仍然占有很大的份额,但其它功能相似的开源项目已经流行起来,并在不断壮大。像Mozilla公司的Firefox浏览器(它是开源的,还有Flock、PaleMoon)。还有增长迅速的基于Webkit的浏览器,像Safari,但最著名的是Chrome浏览器。如果把手机网络也算到这里面,其中Webkit主宰着iPhone、Android和Blackberry手机中的浏览器。Web server software-Web服务器软件迄今为止,Apache是使用范围最广的网络服务器软件,它是开源的,但是一个叫做Nginx的轻量级服务器软件在最近几年开始流行起来。事实上,三大顶级网络服务器软件中有两个是开源的(排名第二的微软的IIS是例外,但其距离第一相差甚远)。另外,大量服务器端底层软件也是开源的。例如,很多大流量网站使用Varnish作为与网站访问者之间的缓存层,而使用Memcached作为与网站数据库之间的缓存层。这只是众多例子中的两个。Scripting languages and web frameworks-脚本语言和Web框架网络上使用的大部分编程和脚本语言都是开源的,比如PHP、Perl、Python、Ruby等。但是,很少有网站完完全全是从零开始。毫不夸张的说,有成百上千的开源内容管理系统(CMS)和网络框架来协助开发人员,例如WordPress、Drupal、Ruby on Rails、Django、Joomla、DedeCMS、Ecshop等。Databases-数据库开源软件MySQL是目前为止最流行的网站数据库,但还有其它功能相似的开源软件,比如PostgreSQL,更不用说近来出现的众多“非关系型(NoSQL)”数据库
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《深入理解课件制作原则》课件
- 初一语文上册《春》解析
- 审计理论与实务考试模拟题+答案(附解析)
- 高等教育学模拟题与参考答案解析
- 2025年1月通信初级工考试题及答案(附解析)
- 自然遗迹保护与国际法律公约考核试卷
- 环境监测与海洋资源合理利用考核试卷
- 老年人休闲活动与康复锻炼考核试卷
- 淀粉产品的质量安全与食品安全管理考核试卷
- 《J采购管理策略培训》课件
- 2025年工程管理试题及答案
- 《电缆状态监测》课件
- 神经鞘瘤MRI诊断要点及鉴别诊断课件
- 青梅绿茶测试题及答案
- GA 1812.2-2024银行系统反恐怖防范要求第2部分:数据中心
- 法治护航成长路-四年级法制教育专题
- 国家职业技术技能标准 6-31-01-03 电工 人社厅发2018145号
- 2024《整治形式主义为基层减负若干规定》全文课件
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
- 国有企业合规管理
- 高考物理力学求极值的常用方法
评论
0/150
提交评论