在使用 Go 两年之后,我又转回 PHP 了 - Go语言中文社区

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


640?wx_fmt=gif

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

640?wx_fmt=jpeg

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

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

以下为译文:

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

 

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



640?wx_fmt=png

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



640?wx_fmt=png

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的全局辅助功能导致的)即可。

 

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


640?wx_fmt=png

 

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

 640?wx_fmt=jpeg

 

在学习了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中实现这一点需要大量工作。



640?wx_fmt=png

Go依然很强大

 


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

 

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



640?wx_fmt=png

做出正确的业务决策

 


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

 

但在听说我们的技术使用的是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 "点个好看吧!"

640?wx_fmt=gif点击“阅读原文”,打开 CSDN App 阅读更贴心!

640?wx_fmt=png喜欢就点击“好看”吧!
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/csdnnews/article/details/87745816
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 18:23:49
  • 阅读 ( 1186 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢