24
回答
【开源访谈】范圣佑:关于 PHP 和 Laravel 不得不说的事
极速云服务器,低至1.04元/天>>>   

    Laravel 作为一套知名度极广的 PHP 开发框架,素以简洁和优雅著称,那么相比其它 PHP 框架,它具体有哪些独特的优势?本期【开源访谈】邀请到来自台北的范圣佑老师,听听他眼中的 Laravel ,聊聊 PHP 生态的那些事儿。

【本期嘉宾】

    范圣佑,来自台湾台北,现任职于得宽科技研究员、Laravel 布道者。 于 2013 年在 Facebook 上成立 Laravel 台湾社团及成立 Laravel 道场教学站,并与多间学校、企业单位合作举办培训工作坊,从此踏上 Laravel 布道与导入之路。 除此之外也在 Github 上发布数项与 Laravel 开发相关的懒人包与外挂,每个月固定举办三场 PHP/Laravel 活动,以实现简洁优雅开发为梦想。 持续关注创新应用、网络技术、印刷出版及甜点烘焙等领域。 目前抱着甜点书持续 Full Stack 的旅程。

【访谈实录】

1、先简单做个自我介绍。(学习、工作经历,主要负责的领域) 

    大家好,我是范圣佑。其实我以前不是做代码相关的,在学校念的其实是设计相关的专业,不过现代设计很多部份都数位化了,所以就开始接触多媒体。为了让交互效果更丰富一些,所以才会开始接触程式开发方面的东西。

    毕业当时Web 2.0 正火,国外 Facebook 飞速发展,我进入到了一家互联网公司工作,开始积累程式方面的技能。工作一年多后,刚好有个机会就跟小伙伴们一起创业,做了一家接项目的公司,到现在已经有七年左右的时间。由于现代网络技术快速迭代,大概每 3-6 个月就会更新一次。对我们这种在做互联网应用的项目公司来说,跟进技术和保持对技术的掌握度非常重要。因此,我在公司内部的主要工作内容也从以前的纯开发变得比较倾向于研究和培训。比方说公司项目有一些特别的需求,会希望我去调研一下所需要用到的技术,看看有没有哪一个项目是适合使用的,由我导入至公司内部 。

2、当初为什么选择从事 PHP 领域的开发?

    当初在这么多程式语言里选择 PHP,主要是因为它简单。尤其是对我这种非本科系出来的学生来说,入手相对容易。再加上它可以跨平台以及开源的特性,除了能满足客户需要运行在不同作业系统上的需求,在全世界这么多人贡献之下,我们在导入及使用上也比较放心,相信它的未来会越来越好。

3、做了这几年的 PHP 以后,除了简单还有没有什么特性是比较喜欢的?

    除了简单外,主要还是看上PHP 的稳定,毕竟已经经过这么多年的发展。加上PHP 生态圈人数众多,相对的套件和框架也就非常成熟,在开发上相对省事。而对我来说,让我持续在 PHP 社区耕耘的主要原因是 Laravel 这个框架。 从 PHP 到 Laravel,在开发上变得非常顺畅,让我可以专注在自己想要做的事情上面,而不用花太多时间去重复制造轮子。

4、在进行 Laravel 传道的这几年里,遇到最多的疑问是什么?是如何解答的?

    基本上大家最常问我的一个问题就是为什么选择这个框架?因为大家都喜欢开玩笑说 PHP 什么都没有,就框架特别多。其实当初在选择 Laravel 前,自己也是有针对框架做过一些评判。我选择 Laravel 的原因其实很直觉,主要就是看上它连续两年被国外媒体评选为最受开发者欢迎的框架,而且学习资源多、文档丰富、布道者众,所以在学习跟导入上的门槛相对较低。而且因为用Laravel 的人愈来愈多,生态系一大起来,就会有很多人帮它写套件,在整合上较不费力。

    另外一个比较常被问到的问题,就是原本不是用 Laravel 的项目,现在要怎么切换过来?问这个问题的人大多分成两种情况,一种是原本没有用框架的,另一种是原本用其它框架的。而答案我们之前有在不同的研讨会上分享过一些经验和建议,简单来说,若评估后觉得需逐步导入,那就先从 Composer 开始,再逐步将项目内的元件换成 Laravel 的,最后再整个切换过去;若一些较小的项目评估后觉得可以大刀阔斧一点,则会建议一次用 Laravel 重写,因为有时重写的时间搞不好比重构的时间更快些。

    像我 6 月 24 日在开源中国杭州源创会上的分享(主题:面对现存数据库反转 Laravel Migration/Seeder 的解决方案),刚好就是最近一个客户的现况。原本他们的项目没有用 Laravel,当他们现在要导入 Laravel 时,该怎么导入 Migration 的机制呢?在分享里就提到可以用套件去扒取现有的数据库,并自动地将它转换成 Migration。像这类型的疑难杂症都是平常蛮多人会找我讨论的话题。

5、很多人说 Laravel 是最成功的 PHP 框架,您认为它的主要优势在哪?

    我觉得首先就是 Laravel 在框架设计上都有遵循所谓的现代化 PHP 开发的标准。尤其它在面对对象的编程上使用了很多设计模式 (Design Pattern),这些在细节上的努力都会让我们在开发和维护上变得更容易。尤其当项目越做越大或越做越久之后,好不好维护对我们来说是非常重要的。

此外, Laravel 有很丰富的套件生态系,几乎你想得到的都已经有人做出来了。也就是说大部分的代码其实都已经有人帮你写好了,你只需要专注在写最核心、最重要的那一块即可,让你更专注在做产品上面。 这是我觉得Laravel可以在社区里这么火、这么受欢迎的原因。

6、在接触 Laravel 之前有没有接触到其他的一些框架?有使用过吗?

   有的。PHP 的框架都各有特色。我最初在做 PHP 开发的时候,曾经很长一段时间用 Codeigniter ,主要是因为它轻量好上手。不过后来它在开发上有点停滞,且更新方向在支持现代化 PHP 开发上不够全面,所以后来才决定转换至其它框架。

除此之外我也接触过 Symfony ,它的设计是比较面向企业的,在开发上严谨些。不过因为我们是接项目的公司,Symfony 的设定相对复杂、啰唆了些,跟团队的风格有些差距,所以就没有选了。

另外还有看过 Phalcon,它比较特别的是用的 C extension 的方式来实作,所以效能特别好,跟国内鸟哥做出来的 Yaf 有异曲同工之妙。不过考虑到我们接项目的时候服务器大多不是我们可以决定的,不太可能在客户的服务器上做编译,所以才没有选择。 

其实在选定 Laravel 之前我曾经历过一段混沌期,那时甚至去 PHP 以外的程式语言逛了一圈,包括 Ruby、Java、Python、ASP.NET…等,都有稍微调研一下这些程式语言对应的 Web 框架。最后还是回到 PHP 的原因,主要是因为我们公司主要使用的程式语言还是以 PHP 为主,假如我换程式语言的话,整个公司的开发工具都得换掉。所以评估之后,决定借鉴别的程式语言里的现代化开发是怎么做的,然后回到 PHP 社区里找一个符合这样条件的框架来用。是经历了这样的过程,最终才找到现在用的 Laravel。

7、据了解,您除了日常的开发工作外,还负责多项技术知识的传播和活动的举办,您如何合理安排自己的时间?您公司对开源的看法是怎样的?

    对,所以这一段时间其实还蛮忙的,也压缩了不少自己私人的时间,不过因为对这些东西真的有热情,所以也愿意花很多自己的私人时间去做技术推广。而公司挺支持我做这一块,目前我们得宽科技也开始做培训的业务。所以一方面自己有热情、一方面有公司的支持,让我有比较多的资源可以投入到这一块。

    我们得宽科技是非常支持开源的,因为我们自己也使用很多开源项目。我们目前在做的一些项目,若未来觉得合适的话,也会考虑开源出来。而我的培训项目 Laravel 道场其实有部份教材是开源的,还有我之前为了让很多首次接触 Laravel 开发的初学者快速上手,有做一个类似懒人包的开源项目,就是把别人的一些开源项目兜成一个,一次装好,然后默认帮设定好很多东西,让他们使用这个包后基本上就只需要专注在学代码部分,而不用搞太多运维或其他方面的东西,先过启动门槛,建立自信心。从这些地方都可以看到我们得宽科技对开源是很支持的。

8、您觉得台湾那边的开源环境,和内地这边有没有一些什么差异?

    我觉得基本上差异不大,因为两边其实都办很多交流会和活动,而且都有越来越热门的趋势,所以我觉得在开源上,两边都是很热衷的。我这次有机会来内地,也是希望可以促进两边的交流。像我发现,因为两边的运维情景不太一样,比方说我在这边参加的活动大多都在讲跟高效能、高并发、海量资料的课题;而我在台北的话,比较多都是在讨论维护、测试,或者说团队合作这方面的议题。我觉得这样蛮好的,各自有不同的专注点,有机会多做一些交流,相互结合一下挺好的。

9、您如何看待“PHP 是世上最好的语言”这个梗?

    我还特意去搜索了一下,才知道原来大家有在说这样一个算是开玩笑的梗,而且似乎是对 PHP 这个程式语言有些批评。我个人是觉得,毕竟 PHP 本身已经是一个有 20 年历史的语言,所以对于一些不熟悉 PHP 开发工具或是不熟悉这个程式语言生态圈的人来说,可能会觉得 PHP 有些设计很奇怪。不过这些年其实 PHP 已经有很大的变化,整个生态系也已经变得很不一样。所以我个人还是蛮正面看待这句话,而且对于我们开发 PHP 的人来说,PHP 的确是很棒的语言。

    而回到身为技术人的角度,我觉得大家还是应该专注在产品上面。挑一个最适合的程式语言来做最适合的事情,并参与该程式语言的生态系,我想就会得到最好的结果。这些玩笑看看就好,不需要太认真。

10、对于学习 PHP 的新人,您有什么经验和建议要分享?

    对于 PHP 新人,我觉得首先要有想做的项目,让自己有目标,这样在学习上就会知道应该朝哪个方向走。很多学生在一开始学习的时候,可能因为没有找到具体的目标,东学一点西学一点,到最后往往失焦,这是应该避免的。另外就是现在的社区很发达,又有很多交流会,我建议新人可以多去参加一些会,认识一些朋友,也便于后面有问题时可以交流和询问。当你碰到问题时能够有人回答并解决到你痛点,才会学得快。

    我在早期学习时就是没有掌握到这个技巧,走了很多冤枉路。现在的环境跟以前不一样,越来越成熟,新人先确认自己的目标,然后赶快找符合自己口味、看的下去的教程或书籍来看,然后有问题到社区去问,这是我觉得最有效率的学习方法。

11、已有一定经验的 PHP 开发者要如何进阶?

   我不敢说自己技术有多么深,顶多只是接触时间比较久一点,所以也会期待能继续提升自己的能力。我自己对于提升能力的想法是这样的,我会尝试跨出自己的舒适圈,不要只看 PHP 的东西。像 PHP 的面向对象这部分的设计,很多都是仿照 Java 这个更早期就在做面向对象的程式语言,而他们已经留下大量的设计模式可供参考。所以我觉得 PHP 的开发者可以透过学习其他程式语言更好的地方,去思考这些程式语言为什么可以这样做,在 PHP 里面是不是也可以这样做。通过这样一个彼此交叉反证的过程,提升自己在思考上的能力。

举报
王练
发帖于4个月前 24回/2K+阅
共有24个评论 最后回答: 4个月前

laravel的思维的确不错。但。。效率真的高吗?

--- 共有 3 条评论 ---
回去干活这个框架效率的确是不高,但是PHP7的性能很高,所以你把php7,laravel所有的优化都打开时,基本上能在50ms以内返回响应,所以在实际应用场景下面,这并不是什么大问题.我现在有十几个项目分别 都是5.2~5.4的版本,性能也很不错,至少不是因为laravel,有比较高的响应都是因为业务的需求,数据库操作太多而造成的,跟laravel本身没啥关系 4个月前 回复
OSC首席键客优雅呀,要效率高,还是要简单。 4个月前 回复
jasonlaravel 的性能其实感觉比较一啦,特别结合到数据库操作之后. laravel ioc 本身也是双刃剑, 代码上简洁了同时也牺牲了性能 4个月前 回复
我也喜欢laravel,就因为他注重api,再过几年php和其他系统做纯数据接口了,不流行smart模板了,这块被js承包了。其他框架可能还没怎么意识到

一说到laravel,都特么的大谈性能。都把你们的网站PV亮出来看看。

--- 共有 2 条评论 ---
eechen只谈优雅不谈性能难道就不是耍流氓?呵呵呵. 4个月前 回复
晨雨零稀正解。不考虑实际就耍流氓的有意思么 4个月前 回复
顶部