ThinkPHP和CodeIgniter的粗略比较.docx
- 文档编号:23920988
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:46
- 大小:205.51KB
ThinkPHP和CodeIgniter的粗略比较.docx
《ThinkPHP和CodeIgniter的粗略比较.docx》由会员分享,可在线阅读,更多相关《ThinkPHP和CodeIgniter的粗略比较.docx(46页珍藏版)》请在冰豆网上搜索。
ThinkPHP和CodeIgniter的粗略比较
ThinkPHP与CodeIgniter开发框架的粗略简单不细致比较
Comparisonofthedevelopmentframework,ThinkPHPandCodeIgniter
Author:
Jinya
Nickname:
EINino
NWSUAFInformationengineeringcollege
未经本论文作者的书面授权,依法收存和保管本论文书面版本、电子版本的任何单位和个人,均不得对本论文的全部或部分内容进行任何形式的复制、修改、发行、出租、改编等有碍作者著作权的商业性使用(但纯学术性使用不在此限)。
否则,应承担侵权的法律责任。
摘要
ThinkPHP与CodeIgniter开发框架的比较
随着PHP在网站开发中越来越流行,他的特点是快速,简单,门槛低,能够短时间内开发出不错的网站,原生PHP语法虽然已经很简单了,但是要是更快速的开发出有效率,安全性能高的网站也实属不易,所以诞生了各种PHP开发框架,最具著名的也就是PHP自家的框架ZendFramework框架,也有许多其他不错的框架,比如Yii,CakePHP,PHPDevShell,Akelos等等十分优秀的框架.
ThinkPHP是国内一款优秀的轻量级PHP开发框架,经历了快10年的发展实际,现在已经十分成熟,其编译机制不输给国外的一些框架.同时作为国人自己的框架,其手册和函数说明等等都是中文的,使得国内PHP程序员能够快速的了解ThinkPHP语法,更深入的熟悉ThinkPHP的内部机理,这是国外的框架不能比拟的,因为国外的大多数框架的说明文档都是英文,虽然有中文版本,但是翻译过来的版本必然不能完全诠释英文原版的道理.ThinkPHP在国内近几年里发展非常迅速,现在国内外已有10000多运营网站使用了ThinkPHP框架.
CodeIgniter是国外的一款举足轻重的轻量级PHP开发框架,一个为建立PHP网站的人们所设计的工具包。
其目标在于快速的开发项目:
它提供了丰富的库组以完成常见的任务,以及简单的界面,富有条理性的架构来访问这些库。
使用CodeIgniter开发可以往项目中注入更多的创造力,因为它节省了大量编码的时间。
其各种操作都简洁明了,条例清晰,对于了解PHP语法并且要快速开发的人来说,是一个十分便捷的工具.
本论文通过对着两个框架的一些机制和使用原理进行解析,是读者能够清楚了解到他们的区别和相似之处,可以选择自己喜欢的框架来开发网站应用.
关键词:
ThinkPHP,CodeIgniter,PHP,框架
Abstract
Comparisonofthedevelopmentframework,ThinkPHPandCodeIgniter
WithPHPwebsitedevelopmentisbecomingmoreandmorepopular,heisfast,simple,low-threshold,shorttimetodevelopagoodsite,nativePHPsyntaxisverysimple,butifmorerapiddevelopmentofefficientwebsitewithhighsafetyperformanceisnoteasy,sothebirthofthevariousPHPdevelopmentframework,themostfamousisthePHPframeworkZendFramework'sownframework,therearemanyothergoodframework,suchasYii,CakePHP,PHPDevShellAkelosandsoaverygoodframework.
ThinkPHPisthedomesticanexcellentlightweightPHPdevelopmentframework,afteralmost10yearsofactualdevelopment,isnowverymature,compilationmechanismisnotlosttosomeforeignframeatthesametimeaspeopleownframework,itsmanualandfunctiontheinstructionssoaretheChinese,sothatdomesticPHPprogrammerstoquicklyaboutThinkPHPsyntaxfamiliarThinkPHPtheinternalmechanism,thisframeworkcannotbecomparedtotheforeign,becausemostforeignframeworkdocumentationareinEnglish,althoughtheChineseversion,translatedversionmustnotbecompletelyinterpretationofthetruthoftheEnglishoriginal.therecentyearsThinkPHPinthecountryisdevelopingveryrapidly,andnowathomeandabroadhasmorethan10,000operatorsthesiteuseThinkPHPframework.
CodeIgniterabroadapivotallightweightPHPdevelopmentframework,atoolkitdesignedtobuildPHPwebsitepeople.Itsgoalistherapiddevelopmentoftheproject:
Itprovidesarichlibrarygrouptocompletecommontasks,aswellasasimpleinterfacewealthyrationalframeworktoaccesstheselibraries.UseCodeIgniterdeveloperscaninjectmorecreativitytotheproject,becauseitsavesalotofcodingtime.Itsvariousoperationsareconcise,clear,regulations,isaveryconvenienttoolforpeoplewhoknowPHPsyntaxandtoquicklydevelop.
Thisthesisistoparsethroughthefrontofthetwoframeworkmechanismandtheuseoftheprinciple,thereadercanclearlyunderstandtheirdifferencesandsimilarities,youcanchooseyourfavoriteframeworktodevelopwebapplications.
Keywords:
ThinkPHP,CodeIgniter,PHP,framework
目录
摘要I
AbstractIII
目录I
第1章 绪论1
1.1研究背景1
1.2使用框架1
1.3开发环境2
第2章 ThinkPHP和CodeIgniter3
2.1ThinkPHP3
2.1.1ThinkPHP介绍3
2.1.2ThinkPHP的分层架构3
2.1.3ThinkPHP的MVC模式4
2.1.4ThinkPHP独创的核心编译和项目编译机制4
2.1.5ThinkPHP特性4
2.2CodeIgniter8
2.2.1CodeIgniter介绍8
2.2.2CodeIgniter技术和架构8
2.2.3CodeIgniter设计和目录9
2.2.3CodeIgniter特性9
第3章 ThinkPHP和CodeIgniter在应用中比较11
3.1配置ThinkPHP11
3.2配置CodeIgniter13
3.3HelloWorld15
3.3.1ThinkPHP输出16
3.3.2CodeIgniter输出18
3.4$_POST和$_GET方法20
3.4.1ThinkPHP的表单21
3.4.2CodeIgniter的表单23
3.5Model的使用25
3.5.1ThinkPHP的Model25
3.5.2CodeIgniter的Model27
第4章 特性比较28
4.1编译与非编译型28
第5章 结论33
5.1论文目的33
5.1.1使用习惯33
5.1.2网站效率33
5.1.2致初学者34
参考文献35
作者简介及在学期间所取得的科研成果36
致谢37
第1章 绪论
1.1研究背景
许多PHP程序员经历了各种开发环境之后,肯定有自己的一套框架选择池,不同的网站和应用需要不同的框架,但是此论文的论述不在这里讨论,只对ThinkPHP和CodeIgniter的一些配置,语法,和一些特性区别给予论述,使读者对这两个框架有更好的了解.
1.2使用框架
开发者可能出于不同的考虑而使用PHP开发框架,不过首当其冲的原因是为了加速开发过程。
相似工程之间的代码重用能够节省开发者大量的时间和精力。
PHP开发框架内置了预建的模块,免去了冗长又令人厌烦的编程工作。
这样开发者就能够把时间活在开发实际程序上,而不是每一次都要为每一个项目重建基础模块。
稳定性是开发者使用框架的另一个重要原因。
尽管简单是PHP最大的资本,也是许多人喜爱这个脚本语言的原因,它也是PHP的“潘多拉之盒”,尤其是那些初学者而言,PHP是如此的简单以至于他们会完全没有意识地写出低质量的代码。
这样的PHP程序可能在大多数时间内仍正常工作,但你可能已在代码中留下了巨大的安全漏洞,使其易受攻击。
要时刻牢记PHP是一门很宽松的语言十分重要,因此确保不在代码中遗留任何安全漏洞是重中之重——即使程序看起来工作正常。
最后一点,PHP开发框架是可扩展的,并且有许多框架可供选择。
你也可以创造你自己的,不过许多开发者决定从那些流行的知名的开发框架中做选择,因为它们往往有着庞大的支持团队,以及相关的论坛/社区方便你与其他使用同一个框架的开发者相互交流。
注意,你应当事先检验你的项目是否需要使用框架,这里提供一份简单的列表以供参考:
使用框架能否节省你(和其他任何会使用它的人)的时间和精力?
是否能够让程序得到更好的表现?
能否提高稳定性?
如果你对上面任何一个问题的回答是肯定的,那么使用PHP开发框架对于这个项目就可能是正确的选择。
1.3开发环境
实验环境:
Windows7Professional+Apache2.0+Mysql5.0+PHP5.4
文件目录:
根目录/TPCI
TPCI下包括TP和CI两个文件夹,分别作TP实验台的根目录和CI实验台根目录.
ThinkPHP版本3.0
CodeIgniter版本2.1.2
使用编辑器Notepad++
第2章 ThinkPHP和CodeIgniter
2.1ThinkPHP
2.1.1ThinkPHP介绍
ThinkPHP可以支持WIN/Unix服务器环境,正式版需要PHP5.0以上版本支持,支持Mysql、PgSQL、Sqlite以及PDO等多种数据库,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
使用ThinkPHP,你可以更方便和快捷的开发和部署应用,当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单、兼容和快速的特性中受益。
简洁、快速和实用是ThinkPHP发展秉承的宗旨,为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践。
作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。
并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
ThinkPHP遵循Apache2开源许可协议发布,意味着用户可以免费使用ThinkPHP,甚至允许把用户的ThinkPHP应用采用商业闭源发布.[1]
2.1.2ThinkPHP的分层架构
ThinkPHP的分层架构采用三层架构模式:
表现层:
包含模板视图、用户界面、JS、Flash等通过模板引擎的支持,可以使用标签定义简化表现层的定义工作。
业务层:
包含业务接口层、业务逻辑层、实体层、数据访问层Action控制器作为业务接口层,提供系统各种业务操作的入口。
因此,不提倡在控制器类中写过多的业务逻辑代码,虽然说很难严格控制。
具体的业务逻辑应该封装到数据访问对象(Dao)类中实现,如果觉得过于复杂,还可以把子业务在Helper类中包装后统一调用。
业务处理过程一般会构造出业务实体对象(如Vo对象),对业务实体对象的存取通过数据访问层完成。
数据访问层把实体对象和数据库数据之间建立映射关系,并且封装了通用的数据操作。
数据层:
目前支持的数据库有MySql、MsSql、PgSql、Oracle、Sqlite,最新版本已经提供PDO的支持,数据库的选用和业务逻辑没有关系。
[1]
2.1.3ThinkPHP的MVC模式
模型(M):
模型的定义由Model类来完成。
Model类位于项目目录下面的LibModel目录。
控制器(C):
应用控制器(核心控制器)和Action控制器都承担了控制器的角色,区别在于Action控制器完成业务过程,而应用控制器(App类)负责调度控制。
Action控制器位于项目目录下面的LibAction目录。
视图(V):
模板的实现是和框架无关的,做到了100%分离,可以独立预览和制作。
模板目录位于项目目录下面的Tpl目录。
独创的核心编译和项目编译机制.[1]
2.1.4ThinkPHP独创的核心编译和项目编译机制
ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。
其特点包括:
1)支持XML标签库和普通标签的混合定义;
2)编译一次,下次直接运行而无需重新编译;
3)模板文件更新后,自动更新模板缓存;
4)自动加载当前操作的模板缓存文件,无需指定模板文件名称;
5)支持编码转换和Content-Type更换;
6)模板变量输出前缀支持,避免变量名称冲突;
7)模板常量替换,无需设置模板变量;
8)支持变量组合调节器和格式化功能;
9)支持替换其它模板引擎插件使用;
10)支持获取模板页面内容[1]
2.1.5ThinkPHP特性
内置XML模板引擎,支持标签库
富模型支持
1)聚合模型:
聚合模型是一种虚拟模型,用于把数据表的字段抽象化,更加容易理解和操作。
我们可以把数据表中的某些属性进行数据封装,这样就把枯燥的数据表字段赋予更好的可读性。
2)静态模型:
静态模型可以让模型的数据静态化,而不需要频繁和数据库打交道,可以用于不经常不变的数据表。
而且ThinkPHP在ORM层上面模拟实现了数据库的视图功能,这是ThinkPHP独创的一项技术,使得多表的关联查询具有更高的效率和可操作性,而无需定义复杂的关联关系,让关联关系更加浅显易懂。
有些时候,数据表的数据一旦添加后就不再容易变化,我们更希望把这样的模型数据静态化,而不需要再次访问数据库。
ThinkPHP支持静态模型的概念,一旦把模型设置为静态,那么会在第一次初始化的时候获取数据表的全部数据,并生成缓存,以后不会再连接数据库。
而只需要直接访问模型的dataList数据即可。
3)视图模型
ThinkPHP在ORM模型里面模拟实现了数据库的视图模型,该功能可以用于多表查询。
要定义视图对象,需要设置viewModel为true,然后设置viewFields属性即可。
CURD和操作高度自动化支持
ThinkPHP提供了灵活和方便的数据操作方法,不仅实现了对数据库操作的四大基本操作(CURD):
创建、读取、更新和删除的实现,还内置了很多实用的数据操作方法,提供了ActiveRecords模式的最佳体验。
丰富的查询语言支持
ThinkPHP大多数情况使用的都是对象查询,因为充分利用了ORM查询语言,了解查询条件的定义对使用对象查询非常有帮助,对于复杂的查询,或者从安全方面考虑,可以使用HashMap对象或者索引数组来传递查询条件。
目录结构自动创建THINKPHP目录结构
ThinkPHP具有项目目录自动创建功能,你只需要定义好项目的入口文件,第一次执行入口文件的时候,系统会自动创建项目的相关目录结构,如果是linux环境下面需要给项目入口文件里面指定的路径设置可写权限。
分布式数据库支持
ThinkPHP的模型支持主从式数据库的连接,配置DB_DEPLOY_TYPE为1可以采用分布式数据库支持。
多数据库连接和切换支持
如果需要在特殊的时候连接多个数据库,那么可以尝试使用ThinkPHP的多数据库连接特性:
包括相同类型的数据库和不同类型的数据库。
(注意:
所谓的相同类型数据库的定义是指和项目配置文件或者模型的数据库连接的数据库类型相同。
)
ActiveRecords模式和丰富的ROR特性
ThinkPHP实现了ActiveRecords模式的ORM模型,采用了非标准的ORM模型:
表映射到类,记录(集)映射到对象,字段属性映射到对象的虚拟属性。
最大的特点就是使用方便,从而达到敏捷开发的目的。
灵活简单的项目配置
ThinkPHP提供了灵活的配置功能,采用最有效率的PHP返回数组方式定义,支持惯例配置、项目配置、调试配置和模块配置,并且会自动生成配置缓存文件,无需重复解析的开销。
对于有些简单的应用,你无需配置任何配置文件,而对于复杂的要求,你还可以增加模块配置文件,另外ThinkPHP的动态配置使得你在开发过程中可以灵活的调整配置参数。
ThinkPHP在项目配置上面创造了自己独有的分层配置模式,其配置层次体现在:
惯例配置-->项目配置-->模块配置-->操作(动态)配置,优先顺序从右到左(在没有生效的前提下)。
模型自动验证和处理
系统内置了数据对象的自动验证功能,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。
需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成的数组,支持的验证因子格式:
验证字段,验证规则,错误提示,验证条件,附加规则,验证时间。
静态页面生成和多元化缓存机制
ThinkPHP内置了静态缓存的功能,并且支持静态缓存的规则定义。
要使用静态缓存功能,需要开启HTML_CACHE_ON参数,并且在项目配置目录下面增加静态缓存规则文件htmls.php。
丰富的数据库及PDO支持
SEO和URL路由支持
AJAX支持
易扩展的系统基类库
系统基类库
ThinkPHP框架通过基类库的概念把所有系统类库都集成在一起,包括ThinkPHP的核心类库。
目前的基类库分成Think核心类库、ORG扩展类库,在这主要介绍的是核心基类库,核心基类库的作用是完成框架的通用性开发而必须的基础类和常用工具类等,包含有:
Think.Core核心类库包
Think.Db数据库类库包
Think.Util系统工具类库包
Think.Template内置模板引擎类库包
Think.Exception异常处理类库包函数库
ThinkPHP内置了一个系统公共函数库,提供了一些系统需要的函数,系统函数库位于ThinkPHP的Common目录下面,名称为functions.php。
每个项目可以定义自己的函数库,位于项目的Common目录下面的common.php文件。
如果项目在Common目录下面有定义自己的common.php文件,框架会在初始化的时候自动导入,而无需自己导入。
匹配导入
Import方法是ThinkPHP内建的类库和文件导入方法,提供了方便和灵活的类似于命名空间的文件导入机制。
自动编码转换
ThinkPHP框架的文件全部采用UTF-8编码格式,UTF-8的支持和自动输出编码转换的功能让页面表现更加灵活。
您可以配置输出的页面编码格式,如gb2312等(默认采用UTF-8输出)。
系统根据配置文件中设置的编码格式自动对页面进行编码转换,支持iconv和mb_string两种方式,为了提高效率,如果系统的模板编码设置和输出编码设置项相同,则不会进行编码转换。
ThinkPHP可以设置模板编码、输出编码和数据库编码,并自动完成转换工作,让你的应用不再受编码的苦恼。
组件和插件支持
基于角色的权限控制体系
企业级的应用是离不开安全保护的,ThinkPHP以基于Spring的Acegi安全系统作为参考原型,并做了简化,以适合目前的ThinkPHP结构,提供了一个多层的、可定制的安全体系来为应用开发提供安全控制。
安全体系中主要有:
安全拦截器、认证管理器、决策访问管理器、运行身份管理器。
[2]
2.2CodeIgniter
2.2.1CodeIgniter介绍
CodeIgniter是一套给PHP网站开发者使用的应用程序开发框架和工具包。
它提供一套丰富的标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目开发。
使用CodeIgniter可以减少代码的编写量,并将你的精力投入到项目的创造性开发上。
CodeIgniter是由Ellislab公司的CEORickEllis开发的。
其核心框架是为这个程序特别编写的,而其他很多类库、辅助函数和子系统则来自于RickEllis和PaulBurdick编写的内容管理系统ExpressionEngine。
来自RubyonRails的灵感启发我们创造了一个PHP框架,并且将框架的概念引入到网络社区的一般意识中。
[2]
2.2.2CodeIgniter技术和架构
CodeIgniter的目标是在最小化,最轻量级的开发包中得到最大的执行效率、功能和灵活性。
为了达到这个目标,我们在开发过程的每一步都致力于基准测试、重构和简化工作,拒绝加入任何对实现目标没有帮助的东西。
从技术和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ThinkPHP CodeIgniter 粗略 比较