本人小菜鸟一只,为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,服务器)等一系列的知识,小菜鸟创建了一个群。希望光临本博客的人可以进来交流。寻求共同发展。搭建平台。

本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加)。

QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)    QQ:1542385235

这是我的真心体会,在尝试使用Laravel、ThinkPHP、Yii、symfony2、CI、cakephp、Yii2 之后的真实想法(default7#zbphp.com)。

1)ThinkPHP (版本3.1.3)

我一开始用到的是ThinkPHP 3.1.3,入门门槛就是网址与方法对应这一点。当初我接触ThinkPHP3.1.3的时候其实3.2版本刚出不久,3.2与3.1.x相比是部分重构,用上了最新的 命名空间 ,考虑到购买的虚拟主机可能不支持命名空间(命名空间必须PHP 5.3.3+才支持),也考虑到国内大部分企业如果已经用上了ThinkPHP,肯定也可能不是最新版的,所以一开始选择的是ThinkPHP3.1.3,用他做了一个网站。总体感觉很好用,他为你做了尽可能及的一切。而且thinkphp是一家公司在支持,这样就不会说突然倒闭解散,如果是企业想用PHP来做一个平台的话,很不错的选择,长期稳定。

2)Yii (版本 Yii 1.1.14)

我学会了ThinkPHP之后,我就想到了再多学一门框架吧,这样以后找工作也更好一点,谈也好谈。然后偶然一次我去一家金融方面的公司面试PHP,他们用的是Yii。回来后网上搜索了Yii相关资料,看到很多人对Yii的介绍称赞, AR、延迟加载、DAO、L10N、I18N,感觉yii一定很有前景 。便开始研究Yii(Yii 1.1.x)。看手册,全英文的,偶然有看到帖子说Yii作者是中国人。后来才确认Yii 确实只中国人写的。看了入门,自己下载下来安装,感觉以自己现在的水平来说很难,很多要记忆的zii widgets,而且耦合度非常高,( 我刚开始接触Yii的时候写的一个看法 http://bbs.csdn.net/topics/390807796 )Html模板里面的写法耦合度更高,便放弃了。

3)cakephp (版本 2.5.1)

到了这个时候,心里想的是就选一门容易点的框架来说,想到了很多年以前就听过的那一款框架CakePHP(最新版本cakephp 2.5.1)。下载下来安装,看文档 不支持命名空间、不用PHP最新的功能方法 。看了英文的一部分文档,很方便的感觉,对比yii,跟thinkphp一样有专门讲到图片验证码、SESSION、cookie操作,很类似thinkphp,很多都为你做好了。然后我下载来做自己的一个网站,我一开始就先做管理员部分,结果就发现, 按照cakephp 的思路,管理员和前台其实应该是在一个文件里面的 。比如你有一个Post表,那么你的管理员和前台的针对Post的操作全部都是在PostController里面,而我期待的是 必须前后台分离,没有耦合 。

4)symfony2(symfony 2.5)

如果不是一本书上介绍到symfony,并且对他有很多非常好的评价,我想我绝对特不会知道并关注symfony2的。开始接触symfony2, 发现他安装方法跟我以前接触到的PHP完全不一样,composer安装,很新颖,这 完全颠覆了我以前对PHP的某些认识 。Symfony2必须在PHP 5.3.3以上的版本,其实现在再去看,是必须PHP 5.4+以上版本,因为他里面的一些组件component要求的是最新版本,因为我写这篇文章的时候,我对这些框架的接触都是在数个礼拜之前,而这一段时间看的框架太多,可能有点混淆,如果有纰漏,或者探讨可以发邮件 default7#zbphp.com。安装好了symfony2之后,仔细阅读symfony2的内容,他最大的特点就是将一整套程序的运行对比成电脑计算机的 Input+Output+CPU 。Request Resonse 和 PHP处理部分( 其实这样的思路后来其他的框架Yii laravel cakephp 3.x全都借鉴了 )。我再继续阅读symfony2的文档,他里面不会像thinkphp那样讲图片验证码、IP、IP归属地怎么查询、图片怎么上传处理之类的,搜索很多相关资料,感觉 symfony2是一个HTTP框架,但是并不是MVC框架,而是一个HTTP框架。他有C 和V,但是没有M 。思路跟yii thinkphp完全不一样的, 组件化 component的思想,跟Ror的任何都是对象的思路不一样,他是 任何都是组件,低耦合 。

5)Laravel (Laravel4.2)

我继续搜索PHP MVC Framework方面的帖子,找了很久,看到有一篇文章上配了一张图(上面那一张),说截止到2013年年底,Laravel占有率是最高的!然后便去了解laravel,百度搜索Laravel,已经有蛮多网站了,比如 www.golaravel.com,介绍laravel框架,文档,介绍到Restful功能、是企业级框架。

其实我一直以来都想找一个这样的框架,长期、稳定,不会一下子就解散了不支持了,不会说今天一变明天一变。并且有命名空间最新的几个功能得有,可以 省去以后经常重构麻烦。下载安装laravel,也是composer方式安装。然后开始用了,发现他官方上一直很推崇的路由功能,使用起来却很繁琐。每一条请求网址都要写一条路由。想到这里觉得不敢想像,一个网站的网址很多的,而且不相同的规律,包括管理员后台,如果这样 每一条网址都要写一个路由 ,而且全部都是些到routes.php这一个文件里面去, 你想象一下, 加载要耗费多少资源时间???而且描述上说的文档丰富,但是看到了真的很少,不齐全(对比symfony cakephp,他的文档真少)。

6)重新回到Yii(Yii 2.0)

其实我这一阵子一直都在寻找一款MVC框架, 支持命名空间、支持AR、方便好用,有图片验证码自动生成、图片上传处理,水印处理,支持I18N,多语言、有很多人在使用、成熟的文档、稳定长期、适合企业级 。最后对比了这么多框架还是回到了最开始想到的那几个框架,重新回到Yii。想到自己为什么一开始就觉得Yii不适合,但去对比了其他框架,才发现Yii是几乎最好的,追求的是执行效率、速度(当然相对)。

对比了这么多框架,发现一个现象, 中国的程序和国外的程序员的思维不同点 ,中国的程序员是看钱包点菜,外国的程序员完全是看自己喜好来点菜。用另外一种说法来讲, 中国的程序员是努力去适应环境,而国外的程序员是努力改变环境。 怎么来说,同样一个需求项目,中国程序员首先考虑到的是服务器支持吗?版本支持吗?承受得了多少访问?配置方面的限制怎么样,怎么样运行最快,国内90%以上的PHP程序都是运行在虚拟主机上,一台服务器数百个甚至数千个网站。而国外的程序员完全不需要考虑这些,他们按照自己的思路来,完全不考虑配置,他应该觉得怎么样一个架构思路,而不用去关心机器怎么样运行最快, 人来决定架构,而不是机器配置决定架构 ,有种 很文艺的感觉 。

比如Laravel,他里面每一个网址就必须写一个路由,这完全是不考虑服务器性能,假设整个网站有3000不同形式的个网址,那一次性加载得多少耗费??还有国外比较流行的程序Drupal,也是完全不计较服务器的配置,而是单纯从人的思考的角度去规划的,他将所有的内容全都想象成节点,key-val的形式,彻底忽略配置的限制。我在本地机子(双核CPU 6G内存)的电脑上运行drupal都卡得无法形容,更别提上传到服务器。

本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加)。

QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)    QQ:1542385235

我的淘宝店,可以进去逛逛噢:https://shop108912636.taobao.com/index.htm?spm=2013.1.w5001-7867000954.3.1d29318dPlLar7&scene=taobao_shop

Yii和ThinkPHP对比心得的更多相关文章

  1. Yii和ThinkPHP对比杂谈

    关于ThinkPHP(以下简称TP)和Yii Framework(以下简称Yii)的背景.作者和速度方面就不涉及了.因为速度是一个很复杂的问题,牵扯的因素很多.我不得不承认ThinkPHP是 一个是国 ...

  2. 到底如何选择PHP框架?Yii、ThinkPHP、laravel、CI.

    如果你是为了工作和就业,你应该选择框架以工作为目标,看公司里面未来招聘中用的最多的是什么框架.很简单的判断方式 很多朋友都不知道如何去选择框架,选择框架的时候就会很纠结.到底该学什么框架,选择什么框架 ...

  3. (转)ThinkPHP使用心得分享-分页类Page的用法

    转之--http://www.jb51.net/article/50138.htm ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.clas ...

  4. Yii;CodeIgniter;thinkphp学习

    http://www.ibm.com/developerworks/cn/opensource/os-cn-yii/ http://codeigniter.org.cn/ http://baike.b ...

  5. 框架(yii和thinkphp)中实例化php内置或者扩展中的对象问题

    将php原生语句实例化SphinxClient对象移植到yii2框架中报错 原生语句中这样写: $s = new SphinxClient(); 框架中应该加入反斜杠,这样写: $s = new \S ...

  6. 快速使用node.js进行web开发

    首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这 ...

  7. 基于Discuz的原生态MVC框架Uxf

    前言 国内大量网站在使用Discuz程序,当然,大多数网站只将其作为一款论坛程序,少量的将其作为一款完整的社区程序.因此,授权不授权的情况撇开不谈,很多人都会基于该款程序进行二次开发. Discuz二 ...

  8. ZF、TP、CI等各种框架的区别

    (原标题:面试常见问题之ZF.TP.CI等框架的区别 http://blog.163.com/m13341159039_1/blog/static/245953061201522092212820/) ...

  9. PhpStorm下Laravel代码智能提示

    phpstorm&Laravel PHPstorm是我见过的最好的PHP的IDE,前年用的时候就毫不犹豫的抛弃了zend studio :) ,Laravel是我用过最好的框架,除了做手游后台 ...

随机推荐

  1. Selenium 2自动化测试实战14(定位一组元素)

    一.定位一组元素 WebDriver还提供了与前面所对应的8钟用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个S表示复数.定位一组元素一 ...

  2. 网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板

    第10单元 - 单元作业:OJ编程 - 创建数组类模板 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...

  3. 字体Lucida Console

    曾经有个段子说的是,一眼能认出黑客的原因就是因为对方在使用黑屏荧光字加Lucida Console其实这正说明了Lucida Console在终端使用的受欢迎程度.Lucida Console也是英文 ...

  4. VIM常用操作手册

    VIM常用操作手册 1.多行操作,多行注释,多行取消注释 https://jingyan.baidu.com/article/9c69d48f43ed6d13c8024e7b.html 2.常用操作 ...

  5. 自动部署脚本-bash

    from here !/bin/bash Check if user is root if [ $(id -u) != "0" ]; then Echo_Red "Err ...

  6. 双系统正确卸载Ubuntu系统

    双系统正确卸载Ubuntu系统  安装系统后由于显卡驱动问题,无法开机,从而只能卸载重装,重装过程如下. 第一步:下载需要的工具包,这里我用的是MBRfix, 可以直接从我分享的网盘链接下载,密码gw ...

  7. Robots协议一定放在网站根目录下

    一.网络爬虫的尺寸 1.以爬取网页,玩转网页为目的进行小规模,数据量小对爬取速度不敏感的可以使用request库实现功能(占90%) 2.以爬取网站或爬取系列网站为目的,比如说获取一个或多个旅游网站的 ...

  8. [Vuejs] 点击单选框触发两次点击事件的处理

    <el-radio-group v-model="uploadStatus" class="upload-status-radio"> <el ...

  9. python logger理解

    import logging#进行基本的日志配置 logging.basicConfig(filename = 'access.log',format = '%(asctime)s - %(name) ...

  10. 洛谷 P3258 松鼠的新家 题解

    题面 貌似这道题暴力加玄学优化就可以AC? 下面是正解: 1.树链剖分: 我们在u到v之间都放一个糖果,可以将松鼠它家u到v的糖果数都加1.每一次将a[i]到a[i+1] (a数组是访问顺序)的节点加 ...