我为什么选择 Laravel
以下是我个人对技术的选择过程,完全主观。分享这些信息的目的,在于多一份信息给新手作为参考,请当做个人经验分享。 ;-)
--
记得那时是 2013 年中旬,个人对 PHP 生态圈的感情,完全是累觉不爱了。
站在 2013 年会往后看,在我过去三年的编程经历中,开发接触到 Discuz、DiscuzX、WordPress、Drupal、Joomla、帝国、PHPWind、ThinkPHP、Codeignitor、Yii、CakePHP、Zend、Slim、Kohana、新公司的自己开发设计过气的老框架+正在设计的新框架 ....
每接触一个软件\框架,就是对一套全新的机制\系统的学习,不同的类加载的实现机制、不同的核心类名称、不同的函数名称、不同的插件系统、不同的主题系统。但其实,大部分时候,他们做的都是同样的事情,有些软件架构像 DiscuzX、Drupal、Joomla 的代码尤其难啃。
看着网络上遍布着各种 《PHP 最流行 30 个开源软件》、《PHP 最流行 50 个框架》的文章,开始问自己:“难道编程就是这样子无止境的学习框架?无止境的学习这些开源软件架构?”,后来也试过选择一个框架作为自己的主修,从外观上看,后台提供商的支持最靠谱的就是 Zend Framework ,因为 Zend 是 PHP 后面的那家公司,可是做了一个项目以后,就完全做不下去了。复杂、臃肿的设计,让你完全产生不了爱意。第二个尝试是当时最受欢迎的框架 Codeignitor ,在当时确实眼前一亮,简单的 MVC 架构,创新的路由设计,可是还是太轻了,要开发一个项目,需要装这个装那个,并且都是手动去装,遇到核心没提供的类库(Class),得去互联网上搜索,然后复制黏贴到手动创建的文件中。中文网页上,有些代码不小心加了几个中文的 ,
还有 (
,debug 到你开始掉头发。
这就是一个 PHPer 在 2013 年的彷徨,完全心灰意冷。在那一年,也开始接触除了 PHP 以外的生态圈 - Python 的 Django, 那时候热的烫手 Nodejs 的 express.js,微软的 http://ASP.NET,Java 的 Spring,Objective-C 的 CocoaTouch(开始公司 iOS App 的开发工作)。很快就发现了 Ruby on Rails 和 Gem 包管理,被他们 ROR 的生态圈深深吸引。他们的设计哲学:
- 强调与注重敏捷开发;
- 约定高于配置(Convention over configuration);
- DRY(Don't repeat yourself)不要重复自己;
- 「编程愉悦性」很重要。
简直就是不能同意更多,站在 ROR 看 PHP 的生态圈,PHP 生态圈简直可以用「一盘散沙」来形容。PHP 拥有那么多的开发者,开发观念还是那么落后,大家各自为战,那么多的脑力,到最后都消耗在大量的重复性工作上,生产力严重浪费。
在 2013 年底,准备完全切到 ROR 上, 2014 的新年愿望里有一条: ”找一份 ROR 工作“。
2014 年 3 月份,接到一位朋友的邀请做创业公司的技术合伙人,开始给未来的团队选择技术堆栈,其实当时差不多可以决定后端选型,就是 ROR。唯一让我犹豫的是,ROR 用的是 Ruby,开发群体太小,作为技术合伙人,不得不考虑后面人才引入的问题。这个时候无意间发现了 Jeffrey Way 的 Laravel 视频教程,通过深入学习,以及对作者的了解,基本上可以定义:这就是 PHP 中的 ROR。不只是长得像 ROR,他的开发哲学(上面罗列出来的)也像 ROR。另外 Jeffrey Way 决定了完全投身 Laravel 的教育中,也加深了我对 Laravel 的信心。Jeffrey Way - Envato Tuts+ Profile 是 Nettuts+ 和 Tuts+ 的优秀讲师,几年的教学经历中,技术狩猎非常广,尤其是Web 开发上,写过将近 500 篇的教程。最后新公司的技术堆栈,选择了 Laravel,虽然那会 Laravel 还比较年轻(现在也很年轻,这里是 2016),但是 Laravel 有一个巨大优势,那就是基于 PHP ,PHP 开发者众多,潜力无限。
... 省略无数社区链接文字,手工加链接手累...
我希望 Laravel 会是我学习的最后一个框架。因为
作为工匠,我更愿意把我有限的生命用在作品上,而不是对工具的无止境的学习上。
结语
以上摘自我在知乎的回答 https://www.zhihu.com/question/30622752/an... ,另一个扩展阅读。
本作品采用《CC 协议》,转载必须注明作者和本文链接
高认可度评论:
:+1:
@Summer BTW:看了知乎的话题,有感而言
其实laravel的优势在概念/思想(concepts),劣势也在概念/思想
想要学习好laravel,技术功底起码理解:
namespace概念及用法,(TP,dz,wp不需要)
composer包管理自动加载规范(TP,dz,wp不需要,虽然可以加上)
安装更新组件时遇到github.com下载慢翻墙等问题有能力解决(TP,dz,wp不基本需要)
设计模式学习(php-the-right-way) (TP,dz基本是傻瓜模式或者是MVC加helper大杂烩)
对于一个小白而言,老板一堆业务需求过来,外行没人在乎你用xx框架,直接一个TP的M()加一堆sql,前端jq搞好了搞定需求,于是快餐菜鸟变快餐老鸟,90%的公司、项目会死掉所以也不在乎可重构可持续、优雅是什么能当饭吃么?
中国现代社会的节奏氛围就是如此浮躁,
能静心跨过前面这几个坎的人才能把自己从做web网站的层次提升到做application应用/project/system系统项目的层次来看待需求问题。
:+1:
说到了心坎上,从工作开始一直用 PHP,然后感觉都是在 CURD。之后有幸知道了 ruby-china,有事没事都会上去看看帖子,感觉 Ruby 社区的生态圈很 Geek,自己也开始去学习 Ruby On Rails,可惜在这个城市做 Ruby 开发的太少了,完全没有得选择:cry: 。然后又去折腾 PHP 了。感谢 @Summer 的 PHPHub(现 laravel-china),让我不在那么的迷茫。:+1:
说到 PHP 中 ROR,也是要提提 CAKE 的嘛。 :smile:
之前一点没接触过php,觉得后台开发其实大同小异,也了解ROR的敏捷程度。
后来了解laravel后,觉得这太强大,脚手架太丰富,可以让自己不拘泥于技术层面的学习。
赞这一句:
不知道 PHP 以后的发展会怎么样?
php里面 比较喜欢2个框架 symfony和 laravel
选择 Laravel,就是选择一个美好的 PHP 生态圈
debug 到你开始掉头发!!!!
作为工匠,我更愿意把我有限的生命用在作品上,而不是对工具的无止境的学习上。
同感,国内研究ROR的太少,有一个继承ROR的PHP框架,也算解开了我的ROR情节。
作为工匠,我更愿意把我有限的生命用在作品上,而不是对工具的无止境的学习上。
:+1: :100:
共鸣!一个好的框架,就是一个公司技术的基石,2016年一个偶然的外包项目接触了Laravel(当时外包技术极力要求用这个框架,本来是基于TP做的),刚开始连这个框架的英文发音都讲不好,心里没底,担心之后的维护,但整个项目开发下来的周期出乎我的意料,太敏捷了,如此快速开发的框架居然很可靠... 在之后,我把公司的技术框架果断的转成了Laravel。
@Summer 如何看待Phalcon
同感,在无休止的争论哪个框架有用的时候,头发掉完了。
顶一个
php不像java/python学校教学都不会教完全是草根自学的动力完成的广大群众基础,所以各种野路子出来的人员素质层次不齐。
国内的php环境略懂TP,DZ加一点点jq插件的人就能糊弄80%的中小企业业务需求,
让他们学设计模式、symfony,laravel,动力不足。
另外2014往后基本php已经不是创业的first choice了,
node,go,加传统的java的ssh组合其实做创业项目都其实不差,php的未来群众基础其实增长势头并不如node,java高。
php草根的群众基础想上一层次只能靠大家build出许多开箱即用的系统打造下一个类似于
DZ,WP的生态圈
laravel有一个类ROR的好的基础,但要想在国内火起来,落地到实际的应用系统才行,CMS/bbs是一个切入点,如果有成熟的类似于DZ/WP的plugin管理系统才有爆点。
@Summer BTW:看了知乎的话题,有感而言
其实laravel的优势在概念/思想(concepts),劣势也在概念/思想
想要学习好laravel,技术功底起码理解:
namespace概念及用法,(TP,dz,wp不需要)
composer包管理自动加载规范(TP,dz,wp不需要,虽然可以加上)
安装更新组件时遇到github.com下载慢翻墙等问题有能力解决(TP,dz,wp不基本需要)
设计模式学习(php-the-right-way) (TP,dz基本是傻瓜模式或者是MVC加helper大杂烩)
对于一个小白而言,老板一堆业务需求过来,外行没人在乎你用xx框架,直接一个TP的M()加一堆sql,前端jq搞好了搞定需求,于是快餐菜鸟变快餐老鸟,90%的公司、项目会死掉所以也不在乎可重构可持续、优雅是什么能当饭吃么?
中国现代社会的节奏氛围就是如此浮躁,
能静心跨过前面这几个坎的人才能把自己从做web网站的层次提升到做application应用/project/system系统项目的层次来看待需求问题。
@Summer,请问下,有没有什么好用的api文档管理系统推荐下,除了国外的Swagger,还有没有其他更好的,现在项目需要将旧的API文档系统进行升级,求推荐几款
现在应该还达不到这种境界, 还是在不断的通过一些框架和开源项目来开阔自己的视野. 希望尽快的能达到你的这种领悟.
@Corwien 如果你有发现好的
api文档系统
, 麻烦请告诉我一下, 我目前用的是phpDocumentor
, 根据注释自动生成文档. 但是感觉还是不太友好.也许见识少,但是确实没发现laravel比tp5有什么明显的优势。一大堆人吹嘘laravel如何强大,甩这个框架几条街,XXX框架和laravel差几个yii,laravel思想如何先进,前景如何如何大好,排名如何如何靠前。但是没有见到一个人真的说清楚好在哪里,优秀在哪里,你所认为的甩别人几条街究竟怎么甩的。都是嘴炮。就像tp粉一说就是tp甩zend多少条街一样。其实真的懂的人,并没多少,多为以讹传讹。但是比较起来,还是觉得tp好用,尤其tp5,对编程习惯和需求,以及文档的撰写,都很对中国人的胃口。
tp的调试模式很清楚,尤其trace,页面报错,直接能定位到代码,laravel页面报错一脸懵逼,完全不知道哪个文件出错误了,哪个代码出错了。没办法自定义验证方法,没办法定义验证场景。想区分insert和update,让insert验证,update不验证,只能if-else,或者写两个方法。页面布局,只能每个views层加上@extends。而tp可以直接定义layout,自动继承。获取请求信息,除了助手函数,laravel每个方法都要用注入去写路由更是费事,完全看不到比tp5好用的地方,要说tp5没有的功能,我觉得队列可能算一个
laravel还是开源成熟的中文项目少了,像当年一个dedecms一个dz论坛几乎建站都用,java开发个网站最后还不得不安装个php的论坛
:joy:新入职一家公司用这个,那就学学咯,之前一直yii2。