在使用 Go 两年之后,我又转回 PHP 了

2019 年 2 月 19 日 CSDN


【CSDN 编者按】PHP 是最好的编程语言?本文的作者有话说。之前为了改进旧程序,实现更好的性能、更轻松的部署和更高的测试覆盖率,Danny van Kooten 选择从 PHP 切换部署到 Go 应用程序。但是万万没想到,在使用了 Go 两年之后,Danny 又将应用程序转回 PHP 了......个中原因何在,本文中一探究竟。

作者 | Danny van Kooten,Web 开发者,ibericode 创始人,WordPress 插件 MailChimp、HTML Forms、Boxzilla 的作者。
译者 | 弯月

责编 | 郭芮
出品 | CSDN(ID:CSDNnews)

以下为译文:

还记得我放弃Laravel转而使用Golang吗(https://dannyvankooten.com/laravel-to-golang/)?嗯,在使用了Go两年之后,我们的应用程序又转回PHP了。

 

为什么?!你已经说过PHP可能是个很糟糕的决定,但现在又要在上面花更多的时间?......嗯,实际上有好几个原因。



PHP的改进

 


过去三年PHP改进了许多:


  • 增加了标量类型声明

    https://secure.php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration

  • 增加了返回值类型声明

    https://secure.php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration

  • 增加了多catch异常

    https://wiki.php.net/rfc/multiple-catch

  • 以及非常优异的性能改进

    http://www.zend.com/en/resources/php7_infographic



Symfony4改变了世界

 


我很喜欢Symfony的兼容性承诺(https://symfony.com/doc/current/contributing/code/bc.html)以及他们13年来为之做出的努力。

 

所以,当Symfony4(https://symfony.com/4)发布,我听到了这些好消息,就去尝试了一下,用它实现了一个小的应用程序。

 

结论是:太棒了,真的太棒了。

 

Symfony4在简化安装上花费了许多心思,启动一个Symfony应用程序可以更方便快捷,需要的配置工作更少。现在它已经赶超了Laravel的快速开发,同时它还鼓励许多很不错的开发实践,避免开发时落入自己的陷阱。而且它的性能非常好(http://www.phpbenchmarks.com/en/)。

 

旧的Lavarel应用程序移植到Symfony很容易,只需要重新实现一些用Go写的功能,恢复之前做的一些便捷方式(大多数是由于Laravel的全局辅助功能导致的)即可。

 

一个非常好的意外收获是我可以很大程度上提高开发中的测试覆盖率。两遍甚至三遍地反复编写同一个应用程序让我对其非常熟悉


 

Symfony的调试工具栏也非常棒。它能显示从请求到响应过程中发生的一切,显示出一切警告和不推荐使用的警告,还有内置的性能工具,可以很容易地对代码进行性能测试。

 

 

在学习了Symfony的Form组件(https://symfony.com/doc/current/forms.html)之后,我深深地爱上了它。设计一个可访问、可重用的表单变得极其容易,还能在提交时验证表单内容,并且安全地根据表单数据填充PHP对象。

 

$user = $this->getUser();
$form = $this->createForm(UserBillingInfoType::class, $user)
             ->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
    // $user is already populated with the form values at this point
    // it's valid, so we can update the database and redirect the user now
}

 

另一个改进我们的应用程序的软件是Doctrine。模型(实体)是普通的PHP类,关系(关联)是普通的引用,使得逻辑测试非常容易,无需再考虑数据库实现。

 

$user = new User();
$user->addLicense(new License());
$manager->persist($user); // both user and its license will be saved

 

Doctrine中,默认所有操作都包裹在SQL事务中。在我看来这一点非常重要,它保证了原子性。而在Eloquent中实现这一点需要大量工作。



Go依然很强大

 


实话实说,Go非常优秀。它非常简单,能实现PHP绝无可能达到的性能。如果我们需要小型的API或需要高吞吐量的功能,我依然会选择Go。

 

但我们的工作室需要大量的服务器端渲染的东西。尽管Go可以做到这一点(过去两年已经证明了),但使用PHP实现会更容易维护。



做出正确的业务决策

 


还有一个没说的原因是,在过去几年,有好几家公司联系我,希望收购我们的一个产品。

 

但在听说我们的技术使用的是Golang时,他们感到有点惊讶。他们告诉我,他们更希望使用PHP,因为我们大部分产品使用的都是PHP。这一点我没法责备他们。


原文:https://dannyvankooten.com/from-go-back-to-php-again/

本文为 CSDN 翻译,如需转载,请注明来源出处。

 


 

 

 热 文 推 荐 

☞ 腾讯起诉西瓜视频直播《王者荣耀》;人人车否认破产;苹果人事大变动!  | 极客头条

☞ 程序员跳槽面试刷题必备,微软工程师放大招!| 程序员硬核评测

☞ 可视化编程真的有那么糟糕?

☞ 故宫“瘫痪”程序员怎么办?

☞ 微服务、Kubernetes和无服务器之后,即将发生的……

☞ 打打游戏就能在北京二环买套房?区块链大神说:你能靠VR刷怪升级还房贷!

☞ 帅气中国小哥出“大招”,程序员跳槽面试刷题必备

☞ 35岁程序员 节后第一天被辞退!

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

点击“阅读原文”,打开 CSDN App 阅读更贴心!

喜欢就点击“好看”吧!
登录查看更多
0

相关内容

Symfony 是一款基于 MVC 架构的 PHP 开发框架。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
PHP使用Redis实现订阅发布与批量发送短信
安全优佳
7+阅读 · 2019年5月5日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
已删除
将门创投
18+阅读 · 2019年2月18日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
从零开始用Python写一个聊天机器人(使用NLTK)
AI研习社
10+阅读 · 2018年12月27日
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
刚开始学编程?这几款小工具能让你事半功倍
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
Arxiv
101+阅读 · 2020年3月4日
Knowledge Flow: Improve Upon Your Teachers
Arxiv
5+阅读 · 2019年4月11日
Knowledge Based Machine Reading Comprehension
Arxiv
4+阅读 · 2018年9月12日
Arxiv
5+阅读 · 2018年3月28日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
相关资讯
PHP使用Redis实现订阅发布与批量发送短信
安全优佳
7+阅读 · 2019年5月5日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
已删除
将门创投
18+阅读 · 2019年2月18日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
从零开始用Python写一个聊天机器人(使用NLTK)
AI研习社
10+阅读 · 2018年12月27日
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
刚开始学编程?这几款小工具能让你事半功倍
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
Top
微信扫码咨询专知VIP会员