深入学习一门新技术的最好方法就是看官方文档。

ThinkPHP5.0文档:

http://www.kancloud.cn/manual/thinkphp5/118003

官方的说辞是:

主要特性

规范:遵循PSR-2、PSR-4规范,Composer及单元测试支持;

严谨:异常严谨的错误检测和安全机制,详细的日志信息,为你的开发保驾护航; 灵活:减少核心依赖,扩展更灵活、方便,支持命令行指令扩展;

API友好:出色的性能和REST支持、远程调试,更好的支持API开发; 高效:惰性加载,及路由、配置和自动加载的缓存机制;

ORM:重构的数据库、模型及关联,MongoDb支持;

只是:

不适合原有3.2项目的升级,请慎重考虑商业项目升级,但绝对是新项目的首选(无论是WEB还是API开发)

可以说是web后端该有的接口都有,最大程度满足使用。

之前学习使用过CodeIgniter(即CI),我简单的将它与CI的功能做下对比:

  1. 模型(Model):模板相当于对数据的操作,数据存放的形式有多种:如数据库、文件系统、内存等。CI没有强制绑定模板对数据库的操作,而ThinkPHP(以下称TP)默认跟数据库操作强相关,确实实际中操作的数据一般都是数据库的,但要操作其他存储类型的数据要怎么办呢?其实TP只是提供了操作数据的许多便利接口,只要不使用这些接口,还是不耦合的;而且存储类型的驱动是可配置的,比如可改为文件数据操作。所以TP要方便的多。
  2. 命名空间的使用。CI党体会不到命名空间带来的便利与优雅。CI使用$this->load()导入不同模块的两个model时应该是冲突的,应该是可以覆盖,但使用起来就不方便了。
  3. TP很讲究使用的便利性,所以提供了很多函数助手,一般正常使用是$a=Class::function();,使用助手之后一般是$a = class();,便利了不少,这个使用上看习惯吧。CI就要麻烦冗长地写成$this->class->function()

  4. 说说视图(view)与模板(template)。CI的视图文件的存放位置是application/view下面,而且不可配置,至少我没找到可以配置的地方。TP的view目录可配置,而且不一定要在application下,对安全访问和视图定制与替换提供比较大的便利性。

    对于模板,CI实现得比较鸡肋,虽说有个模板解析类 $this->load->library('parser'); 可以通过左边这代码加载,但是只能实现变量的简单替换,较复杂的控制结构就实现不了了,到头来还是用原生的php代码实现(我估计官方也提倡用原生,毕竟原生不用多解析一般,效率上占优,语法也不用再学一套)。

    而TP的模板就比较全面和成熟,有自己的一套语法,基本上是不用夹杂原生php,也许对于前端工程师来说是个好事吧,不用学php,就学个模板语法。前后端分工也就更加明确了。

  5. 现在一想,CI和TP的MVC目录结构有着比较大的区别:
  6. CI的controllers、view、model就各分别一个目录,模块的划分是以上面各目录下新建子目录作为模块目录,或者干脆没有模块的概念,直接在目录下创建控制器和模型等。
  7. 而TP是以模块作为基本的隔离单元,默认各个模板所对应的目录下都有一个controllers、view、model目录。

  8. 至于调试(debug),TP绝对是甩CI几条街,官方提供的方法就有:

而CI只有简单的将错误的调用暂打印出来,虽说这已经可以解决60%以上的问题了。

所以问题来了,为什么CI在国外也很流行,国内也有一定数量的公司在使用呢?

还是用官方的话说吧:

CodeIgniter 就是你所需要的,如果...

你想要一个小巧的框架;

你需要出色的性能;

你需要广泛兼容标准主机上的各种 PHP 版本和配置;

你想要一个几乎零配置的框架;

你想要一个不需使用命令行的框架;

你想要一个不想被编码规则的条条框框限制住的框架;

你对 PEAR 这种庞然大物不感兴趣;

你不想被迫学习一种新的模板语言(当然如果你喜欢,你可以选择一个模板解析器);

你不喜欢复杂,追求简单;

你需要清晰、完整的文档。

所以,CI学习起来和用起来十分简单和上手,框架非常轻量,这就成为一部分想要高性能又不想受框架过多约束的公司的首选了。

TP与CI的区别就先讲到这里,后面随着学习的深入可能会有所补充。

-end-

Thinkphp与CI的区别的更多相关文章

  1. CI框架与Thinkphp框架的一些区别

    初学CI框架遇到的一些问题,与Thinkphp框架对比的不同之处. system             是框架核心 application        是项目目录 index.php        ...

  2. laravel 和 thinkphp 条件查询的区别

    laravel:以二维数组形式where查询,可以为空,即,该条where不运行: thinkphp:以字符串形式查询,不能为空.

  3. mysql 创建数据库的时候选择 utf8 bin 和 utf8 ci的区别

    utf8 ci  不区分大小写: utf8 bin 区分大小写:

  4. 纯PHP Codeigniter(CI) ThinkPHP效率测试

    最近一直想做一个技术类的新闻站点,想做的执行效率高些,想用PHP做,一直纠结于用纯PHP做还是用CI或者THINKPHP.用纯PHP效率高,缺点 n多,比如安全方面.构架方面等等等等:用CI.thin ...

  5. ThinkPHP 笔记

    1.循环中使用比较运算符 <volist name="subjects" id="v">       <option value=" ...

  6. thinkphp中的类库与引用import引入机制

    ThinkPHP的类库包括基类库和应用类库 控制器类 模块名+Action 例如 UserAction.InfoAction 模型类 模型名+Model 例如 UserModel.InfoModel ...

  7. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

  8. 从零开始之ecshop基础篇(17)

    目标:基于自定义的mvc框架开发的案例(项目) 项目周期    需求分析 典型的业务逻辑:    电子商务:商城(京东),B2C,C2C(淘宝),团购,秒杀,代购 内容管理:新浪门户类,优酷视频管理, ...

  9. 帮朋友急招PHP、Android开发工程师 西安 工资8k-12k

    PHP高级工程师岗位要求: 1. 有两年以上PHP开发经验, 2. 精通PHP+MySQL程序设计及开发,拥有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,代码冗余率低. 3. 熟悉面向对象的软件 ...

随机推荐

  1. [译]Selenium Python文档:六、页面对象

    本章是介绍页面对象设计模式的教程.一个页面对象代表了web应用用户接口的一片区域,你的测试代码将与之交互的. 使用页面对象模式的好处: 可以创建在多个测试样例中都可使用的可重用代码 减少重复性代码 如 ...

  2. Android Studio开发遇到程序崩溃问题

    在用Android Studio开发过程中,经常遇到程序本身没有错误,但运行起来却总是挂掉,具体有如下几个解决方案: 1.将运行在真机上的app卸载,重新运行安装 2.在Build选项中有一个clea ...

  3. 极客君教你破解隔壁妹子的wifi密码,成功率高达90%

    首先,给大家推荐一个我自己维护的网站: 开发者网址导航:http://www.dev666.com/ 破解wifi密码听起来很复杂,实际上也不是非常的复杂,极客君(微信公众帐号:极客峰)今天教大家如何 ...

  4. 解决codeblock不能运行的问题

    codeblock 编译失败 软件 IDE codeblock这软件的确不错,但是除此安装使用就会不小心入坑.你是不是满心欢喜的下载好codeblock,敲入代码,点击运行的时候却总是没反应呢? 如果 ...

  5. 百度cdn资源公共库共享及常用开发接口

    CDN公共库是指将常用的JS库存放在CDN节点,以方便广大开发者直接调用 网站:http://cdn.code.baidu.com/ 常用资源: jquery: http://libs.baidu.c ...

  6. Object-C知识点

    Object-C常用的知识点,以下为我在实际开发中用到的知识点,但是又想不起来,需要百度一下的知识点 1. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: ...

  7. sublime Text3快捷键使用大全

    Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本.Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数名等.Ct ...

  8. Statistical Models and Social Science

    1.1 Statistical Models and Social Reality KEY: complex society v.s statistical models relationship,d ...

  9. linux常用脚本

    转载于http://justcoding.iteye.com/blog/1943504 我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个l ...

  10. GPIO寄存器

    GPIO寄存器描述 <STM32参考手册中文-p75> 1.端口配置低寄存器(GPIOx_CRL)(x = A...E)2.端口配置高寄存器(GPIOx_CRH)(x = A...E) 3 ...