我最近要搞一个项目,项目不是很大,需要一定的后期扩展,关键要考虑的是性能与开发速度。我个人PHP基础还行,只接触过Smarty,对MVC略熟悉,没真正深入学习过一个MVC框架,可以说是一个新手,请大家针对我现在的情况,给我提出些建议或者你对Codeigniter和Laravel的使用心得,多谢!(图片引自对PHP框架性能对比http://systemsarchitect.net/performance-benchmark-of-popular-php-frameworks/)
回复内容:
力荐Laravel!
顺更新2015最流行PHP框架报告:
更多报告信息:更多报告信息:http://laravelbase.com/posts/32
这两个框架不是同一个级别的。
CI比较接近原生的PHP,在原有PHP代码的基础上封装了很多类,因为它架构简单,所以容易扩展。从另一个角度来看,也就是没啥架构,最最原始的三层架构。
Laravel 简直就是一次创新,大量吸收了Java,RoR等其他框架的精华,在架构方面,已基本做到现有Php框架最佳,扩展性,伸缩性强大得一塌糊涂,非常适合团队作战。
对于新手来说,Laravel初看上去不太像Php的原本写法了,所谓优雅,就是你光凭代码就可以知道意思,而不用读注释,代码精简复用度非常高;Laravel开发人员都是PHP圈子最顶尖的高手,他们习惯用新的技术和架构,即便如此,Laravel其实上手并不难,一旦以你掌握了它的大致要点后,你会逐渐发现它在每一个方面都全面超越CI,且实用性非常高。
Laravel的内核扩展其实也非常方便(这么强大的框架你没事干嘛去扩展内核:D),只不过它少量内核类的耦合度较高,你需要花点时间读读源码和API。如果是自定义类,那就完全没问题,太方便了。
P.S 欢迎大家访问我用Laravel 5 写的小站:LaraBase – PHP工匠之家
说句题外话:Laravel 圈子里面有个奇葩,叫 Jeffery Way,他以前在http://tutsplus.com当编辑的,就是专门教CI的,后来成为Laravel的死忠,现在专职 教Laravel 的视频课程,他的网站http://www.laracast.com可能是这个星球上关于编程方面最强大的教程,那些说Laravel资料少的可以去看看。
什么?英语不行? 我认为为了Laravel你可以去学习一门语言,就是有那么值。小项目的话 ci 还是很值得推荐的(当然也得看有多小……)。
ci 最大的好处是上手容易,对新手比较友好。有多容易呢?这么说吧,我曾经在完全不会 php 的情况下边学边写,照猫画虎,用 ci 开发了一个个人 podcast 网站,带完整后台。
因为是老项目,ci 的中文资料和案例非常丰富。ci 本身的文档也非常详实,易阅读。横向比较的话,我认为ci 比 nodejs 上的 express 还容易入门。由衷推荐 Laravel
Laravel是PHP 5.3之后开发的新框架,充分使用了PHP 5.3之后的新特性,不像很多老牌框架有一大堆历史包袱。
官方文档详尽丰富且归类科学,稍微有一点PHP基础便可很快入门,写出可用的示例程序
核心功能大量使用Composer第三方类库,在很多人看来这是Laravel的弊病之一,但我认为这正是其优雅设计哲学之体现。所谓 术业有专攻,专业的人做专业的事, 成熟的第三方类库往往是专业团队经过长时间迭代打磨的成果,比如Laravel大量选用的symfony组件,日志库 monolog,时间库 carbon 都是该类别最稳定流行的库。
我相信,短暂尝试后,很快你便会爱上Laravel,同时会爱上Composer的便捷。
THE PHP FRAMEWORK FOR WEB ARTISANS你,值得拥有。
——-
很赞同 @谢弟 的观点,框架的性能不是不重要,只是没有重要到需要优先考虑的地步,在我很有限的几年WEB开发经验下面,我觉得90%的性能瓶颈都是在数据库层面,PHP层面即便真地出现性能瓶颈,线性地增加PHP处理节点或者使用HHVM这种开源项目也是无痛且高效的办法。
我认为WEB开发多数情况下是敏捷开发,因此选择框架是大致可以考虑以下几点:
1. 开发迅速 : 基础组件齐全且不累赘,框架的设计哲学可以助人快速写出优雅且高效地代码(相对而言)
2. 文档简明丰富和社区活跃 : 文档不是多就好,精心规划的文档内容组织和简明到位的排版可以大量降低框架的学习成本,比单纯的求多求全堆砌内容高明很多。活跃的社区可以确保问题被快速响应,拥有大量工具模块
3. 逻辑清晰 : 框架的代码逻辑清晰,代码的目录结构清晰,轻松地协作开发和代码重用
4. 可扩展和无痛版本更新 : 核心代码低耦合,便于扩展,框架设计有预见性,版本升级无需大功干戈
5. 便于测试 : 一般来说满足了 4 ,测试都不会是大问题,Codeception,phpunit 这种第三方测试工具很多
6. 性能 : 大多数WEB应用无需考虑框架层面的性能问题,当你真的需要考虑框架性能问题的时候,也有很多平滑地解决方案
7. 无重大BUG漏洞:这个当然最重要,不过一般来说成熟的开源框架不会有这个问题,放最后thinkphp吧,这个简单易用,但是缺点非常明显,在更新26个字母就用完了首先声明一下PHP框架的性能问题真的不重要, 性能问题主要还是数据库那块.
再说PHP机器是可以线性扩展的, 如并发性能不足以支承当前负载, 可以加机器解决. 而且不用修改任何代码.
理论上能线性扩展的问题都不是问题.
再说下框架吧, CI框架是一个相当简洁的框架, 该有的它都有, 比如input过滤器, url路由, helper等等.
上手相对容易, 不过这些组件是框架的都会有, 再说它确实是老了. 很多思想跟不上时代.
Laravel 比较新, 看下了它的路由, 写的不错, 比ci的路由处理要方便简单. 很多新的思想在这个框架里面
都有体现. 而且Laravel的市场使用率是最高的, 相信大多数人选择它是有理由的.
如果之前没有使用框架的经验, 建议用Laravel.
其次, 使用什么框架不重要, 重要的是你对框架的理解以及对框架的改造能力.
所以一定要看懂框架的源代码, 比如数据库访问层, url路由的原理…
上个图(关于不同框架的市场占有率)
大概读过这两者的代码
CI的设计比较老套,且还有历史包袱
Laravel因为是后来者,设计上更先进一些
我是倾向于Laravel的
先把你这个项目内主要的技术需求点对照到各自的文档看看支持程度如何
然后花一天时间分别用这两个框架写一个用户登录注册什么的对比一下试试看
至于中文文档什么的存不存在就不要太依赖了,干了这行就要有啃英文文档的觉悟只用过CI跟Yii,就UP主所描述的水平推测,CI会比较适合你,能在短期上手开发出产品
当然,CI的缺点是对面向对象的理解更偏向于简单的封装,基本上我还是觉得自己在做面向过程的工作(水平问题,你也可以自己设计很多类来灵活运用,但毕竟框架轻量,要完成复杂的设计还需要使用者有较高水平)本人用过Yii2和Laravel,简单说一下。如果你们前端不怎么好,Yii的widget是一个很好的东西。前端无压力还漂亮。代码结构也清晰,IDE提示较好。
Laravle我觉得思想很先进,包括代码组织和php特性。但是不得不说Facades这些概念,有点过度设计。不过我觉得,前端同学很好的话,就用laravelCodeigniter 的文档相当丰富,Laravel 4 的资料不多。 Codeigniter 相当轻量级,下载下来就能用,Laravel 4 需要用 composer 下载安装各种第三方依赖库,在国内下载网速很慢。Codeigniter 兼容 PHP 5.2,Laravel 4 要求 PHP 5.3.7 以上。
Codeigniter 中 URL 都默认路由到某个 controller 的方法,Laravel 4 允许用 Router 自、本文来源gao($daima.com搞@代@#码$网搞gaodaima代码由定制,甚至可以用一个匿名函数来处理某些逻辑上相对独立的请求,例如验证码图片生成,而不必去定义一个控制器类。Codeigniter 的数据库操作一般采用 query builder 的方式,或者叫链式操作,Laravel 4 支持 query builder 方式以及 Eloquent ORM (非常好用,可以单独拆出来放在其他项目里)。Laravel 4 自带 artisan,以及一个很好用的插件 way/generators ,能够自动生成代码,完成数据库 migration 等等,Codeigniter 没有这类工具。Laravel 4 自带 phpunit 支持,可以方便写出单元测试。
最后,推荐一个 Laravel 4 的教程 :Code Bright : Code Bright ,写得比较通俗易懂。Codeigniter 直觉化、轻量级、易学易用。如果要你自己写个PHP框架,出来估计就跟Codeigniter 差不多。你可以用它来写小东西,然后慢慢扩展。Codeigniter 不会妨碍你的规划和发展,只会规范你的程序架构。当然他的缺点也在于此:比较简陋,很多粗话还得自己慢慢弄。不过这不就是PHP的优点吗?如果你真的需要一个先进酷炫的框架,还是用rails是正道,甩PHP所有框架几条街不是问题。