服务器后端语言选择(PHP篇)

背景图片 来自 Markus Spiske on Unsplash

ProjectX是现在我在做的一个项目的代号,我计划在整个项目的过程中做更多的尝试,并且尽可能的将过程记录下来。如果感兴趣可以关注我,非常欢迎给我或是ProjectX提提你的建议。

这次ProjectX在选择后端开发语言的时候,我不会考虑我自己的熟悉程度和之前的积累,希望可以比较客观的选择一个适合的后端语言,我也可以通过这个过程了解更多后端语言。目前计划尝试的后端语言有:PHP、JAVA、Node.js、Go、Rust、Ruby、Python。没有案例的分享都是耍流氓,我用这几个语言统一做一个简单的数据查询返回的API接口,来从服务器支持、开发环境搭建、RESTful路径设置、数据库连接、语言结构和文档社区丰富度六个方面来聊聊我自己的感受。

语言简介

PHP的全称是PHP:Hypertext Preprocesser (一个程序员的黑色幽默),最初Personal Home Page的简称,算是目前最流行的网站开发语言,从PHP的名称就能看出来,PHP最初就是为了开发网站而设计的编程语言。据统计目前有80%的网站是有PHP开发的,尤其著名的Wordpress就是基于PHP开发的。PHP对于我来说也是最熟悉的后端开发语言,已经用PHP开发了大概15年了,从以前开发网站到后来App的后端接口再到小程序的后端接口基本都是使用PHP。也就是因此,我的第一篇打算从PHP开始分享,毕竟比较熟悉不容易翻车。

服务器支持

既然是最流行的服务器端编程语言,服务器的支持绝对是最佳的,PHP通过Apache服务器可以安装在所有服务器操作系统上,包括Linux、macOS、Windows和Unix系统,就算使用其他Web服务器软件,如Nginx、Lighthttp、LiteSpeed等等也都支持,虽然可能没有Apache自带那么方便。现在云服务器的服务供应商基本上都支持携带Linux+Apache+MySQL+PHP的镜像安装。基本可以做到了开箱即用,而且对于绝大多数网络应用来说基本不需要做什么配置,直接将在本地开发环境中的代码上传到相应的文件夹就可以使用了。所以服务器支持基本上可以算是满分了,而且购买了云服务器之后基本不需要配置就可以开始部署代码,服务器配置也很快,在几个大的云服务商基本上确定了合适的服务器运算配置后,只要15分钟就能让一台LAMP服务器上线。

LAMP构架的服务器

IDE vs. Editor

PHP作为解释性语言,可以不用依赖IDE,不过现在PHP的框架还是非常成熟可以提高不少开发效率,IDE的好处是能直接通过新建项目来生成这些框架的脚手架,比直接在命令行内生成要直观不少,为此我尝试了一下JetBrain的PhpStorm。虽然PhpStorm已经改成了订阅制的收费方式,不过还是小贵的。我先安装体验一下,再看看是不是值得购买。

一年一千多,还是有点小贵的

整个安装过程还是比较快速的,直接下载后拖拽入应用程序文件夹即可。然后打开PhpStorm先做了简单的配置和插件安装,可以看到PhpStorm对于主流的一些PHP框架都是有不同程度的支持的。这样新建项目的时候就可以直接选择需要的框架来搭建脚手架程序,非常方便,对于刚刚涉猎PHP的框架还是比较不错的,例如Symfony就可以直接建立带有Demo的项目,这样就可以边学边用。

PhpStorm直接生成Symfony项目

不过个人比较不喜欢使用框架,而且这次ProjectX对于性能优化的要求并不是特别高,所以就不准备使用框架了,毕竟从无到有的开发还是蛮有成就感的。最终还是决定使用VS Code来做开发,结合一些VS Code的语言格式化和高亮等插件,VS Code基本能满足整体的开发需要。因为过程中可能会尝试一些新的技术,会通过学习一些已有第三方库来深度学习,所以还会通过Composer来安装一些PHP依赖库。

基本上PHP还是选择了Editor,开发配置会更直接一些,结合一些插件基本上就能着手开发了。

RESTful VS GraphQL

因为ProjectX计划是跨平台的前端,所以后端会通过API的方式来实现服务,之前一直使用的是类似RESTful的API设计,毕竟对于比较复杂的后端接口来说RESTful还是有一些局限的,而且往往没有足够时间来设计完整的RESTful API。后来出现了GraphQL,这次会多花点时间研究一下,GraphQL更像一个前端向后端传输的查询语句,可拓展性更高一些,这次在PHP中就试试能否使用GraphQL的接口规范。

在PHP中配置RESTful规范的API,主要是对路径的重写来实现相应的RESTful EndPoint可以直接重新定向到相应的PHP文件。达到路径重写需要通过加载rewrite模块就可以让Apache服务器支持路径改写,支持类似下面这样的路径来调用一个herb的资源对象。

开启rewrite的方式是在httpd.conf文件中找到mod rewrite这行代码将注释标识符#去掉

再将服务器根文件夹中AllowOverride 从默认的None改成All,

在重启动服务器就完成了Apache的配置,接下来就是在项目的目录下通过建立 .htaccess文件来开启重写引擎和建立重写规则。通过正则表达式来匹配请求路径中的信息,然后再匹配到相应PHP文件以及PHP的传入参数。 如下是一个简单的重写规则:

完成重写规则之后,就可以在相应的PHP文件中编写业务逻辑了,例如在herb.php中根据不同的HTTP提交的请求方法来返回相应的JSON格式数据。例如一下通过Postman来测试的接口。

RESTful接口的返回测试

对于PHP来说建立一个RESTful规范格式的API,还是相对简单的,不过主要会在接口设计上花比较多时间,尤其对于比较复杂的业务场景,完全按照RESTful规范设计会很困难,尤其是在需要传路多个参数的时候。

GraphQL的出现实际上就是弥补RESTful的一些设计缺陷。不过因为之前一直没有花时间学习GraphQL,乘这次的机会深入了解一下。GraphQL基本上是一套前端发送查询语句到后端的规范,可以通过添加多个输入参数和指定返回数据的参数的方式,将数据传输变得更可控,而且还添加了数据类型的控制。

在PHP中使用GraphQL可以通过已有的第三方库,例如graphql-php、Railt、GraphQLite、Siler以及一些框架下的库,都是不错的选择,因为graphql-php应该算是PHP下对GraphQL实现的第一个库,所以是通过Composer安装了一下,尝试了一些GraphQL的机制,的确比RESTful灵活很多。如下在Postman中测试的接口,可以通过控制查询语句来控制返回的数据结构。

GraphQL接口的返回测试

不过graphql-php的文档不是很完善,只提供了一些简单的操作方式,估计最终如果选择使用PHP来实现GraphQL的话,估计会自己写一个GraphQL的处理库或者找到一个完善一点的库。

对于PHP来说,无论是对RESTful还是对GraphQL的支持都中规中矩,都有第三方库支持,就算自己来做库也都不算太困难。

数据库连接

这个点PHP已经非常成熟了,原生的库基本就能解决所有问题,为了更适合ProjectX的和个人的习惯还是会做一定的封装,现在已有的开源框架对于这方面的支持也算是不错的,可以直接使用现有框架,当然自己写一个基础的库也可以让自己更熟悉PHP对于数据连接上的一些机制和支持性。

语言结构

PHP目前已经发展到了第7版,无论是面向对象的开发方式还是函数的开发方式都支持,而且PHP对于Class的支持还是中规中矩的,对于封装一些业务逻辑来说还是不错的,只是PHP作为一个弱类型的编程语言,对于变量类型的控制会比较弱一点,不过只要养成一定的开发习惯还是能规避一些这方面的问题的。

文档社区

作为最流行的网络应用开发语言,文档支持和社区支持非常成熟,可以在Github上找到任何类型的库解决绝大多数开发中的问题,类似CSDN、Stackoverflow这类网站上解答关于PHP的问题也非常多,PHP官方文档也支持中文,基础问题也直接能在php.net上解决。

总结

作为最流行的网络应用开发语言,PHP各方面都非常完善,是可以直接拿起用的后端开发语言。不过因为自己对于PHP太熟悉了,绝对挑战少了一些,所以这次基本上不会使用PHP作为后端开发语言,除非尝试下来其他语言都不适合后端开发,不过这个概率应该不大。

希望你喜欢这次的分享,如果喜欢的话,可以点赞让我知道一下!如有不同想法或是对之后内容的建议,可以在评论区讨论一下。

给 PHP 程序员的 10 款最佳 IDE

如果你说PHP编程用基础的文本编辑软件就可以了,比如用记事本。是的,这对于业余爱好者来说绝对可以。但选择一款功能丰富而完整的开发软件还是要好一些,尤其是专业开发者更有必要。这些软件如:NetBeans, PHPStorm, VIM, Zend Studio, Cloud9或Atom。

好的开发工具富有特点而且能够帮助开发者快速高效地编辑程序,它是开发者的基本需求,磨刀不误砍柴工,提前花点时间选择一款适合的开发软件是为上策。

那选择哪一款呢, 这个问题要看你的需求、偏好和预算。 选定一款之前试用几个也不错。

大量PHP开发软件支持跨平台系统,能用于Windows,Linux和Mac,而且提供免费下载。 对于初学者,我的建议是,你可以随意选择一款免费的,可用就行。 比如:NetBeans,VIM,Atom或Eclipse PDT。

企业和专业开发者可以用这些免费的开发软件完成程序编辑,但同时也有很多收费的平台因为整合了很多最新和更进步的功能特性而备受企业开发者的青睐。随便举几个,比如:PHPStorm, Sublime Text, Zend Studio, Nusphere, PHPED, PHP Designer和 Cloud 9等。

假如你只是想用PHP做简单的应用而非构架一整个系统,那么你也可以试一试那些线上的PHP开发工具,比如说PHPfiddle.com。 更简单的你可以选用witephponline.com和ideone.com。

好了,那让我们来看一下被全世界开发者们公认的10个优秀的开发工具吧。它们功能丰富,广为流传,最为先进而且备受喜爱。

1. NetBeans – 最好的PHP IDE (免费版本)

NetBeans是供普通大众使用的PHP IDE,它功能丰富、免费并且支持多国语言,其中包括英语、日语、俄语、巴西葡萄牙语以及简体中文。NetBeans的免费版本的发布日期要回溯到2010年,Sun Microsystems开始将其作为开源项目发展,后来Sun Microsystems成为了Oracle的子公司。

自发布以来,NetBeans的下载次数已超过1800万次,同时拥有一个最大的致力于开源集成开发环境的开发者社区。

过去,NetBeans的用途很少,只能进行Java开发,但现在,这样的日子一去不复返了,NetBeans目前的稳定版是轻量级的、速度更快并且全面支持PHP。对于像Zend、Doctrine、 Smarty和Symfony2一类的流行PHP框架以及像Yii、CakePHP、 FuelPHP和Wordpress CMS一类的其它框架提供了开箱即用的支持,也通过laravel-ide-helper提供了对Laravel框架的开箱即用支持。

让NetBeans位居榜首的关键特性是拥有很多代码生成工具,像getter setter生成、代码模板、智能代码补全、提示、快速修复和重构等。另外还支持一些基本特性,包括代码折叠和格式化、try/catch代码补全以及矩形选区等。

当进入调试阶段时,你可以在本地或者远程使用命令行或者xDebug。NetBeans PHP编辑器对包括 javascript、HTML和CSS等web开发都提供了开箱即用的支持。所有这些特性轻而易举地使得NetBeans成为最好的开源PHP IDE。

阅读更多有关NetBeans的内容请访问官方网站netbeans.org。

2. PHPStorm- 最好的PHP IDE (商业版本)

PHPStorm 是全功能的PHP IDE,其拥有最现代化的功能集可以快速便捷的进行网页开发。它由名叫JetBrains的公司开发并销售。 在过去的15年中,在开发工具的市场中JetBrains是最受人喜爱的公司,它使得编写代码更加的轻松和愉快。

PHPStorm 很好的支持主要的框架比如Symfony, Zend Framework, Yii, CakePHP, Laravel以及主要的CMS系统如Drupal, Magento 和Wordpress。

不是所有的Web开发项目都没有前端技术,这也正是PHPStorm耀眼之处, 它几乎提供了所有前端技术的实时编辑功能比如CSS, Sass, HTML5, CoffeeScript, TypeScript, JavaScript, Stylus, Less等等。同时还支持代码重构,调试和单元测试。

从发工具方面来说,它提供了版本控制系统,sql数据库,composer, 远程部署,vagrant,其他的客户端,命令行工具等诸如此类的功能。

从调试的角度来说,它支持Zend Debugger和Xdebug,也同时支持本地的或远程的。

PHPStorm是企业级IDE, 需要授权费用,主要的目标是专业的开发人员,但是它同时为教师,学生或开源的项目免费提供。

PHPStorm的普及程度可以从一个事实来衡量,就是众多的大公司如Expedia,Yahoo, Cisco, Salesforce 和都曾有购买过PHPStorm IDE的授权。

你可以在以下地址下载PHPStorm试用版 (免费30天) – Download PHPStorm trial version.

你想了解更多的PHPStom请登录官网 – jetbrains.com/phpstorm.

3. Sublime Text 3 / PHP IDE

Sublime Text 3 是我最喜欢的一个,也是候选的最强文本编辑器。它轻量级,拥有丰富的特性,还支持在Windows,OSX 和 Linux 上运行。 Sublime text 编辑器变得强大是通过插件和包来实现的。

有许多 PHP 的外部包可以使用,这些包可以帮助这个优雅的编辑器变成一个优雅的 Sublime PHP IDE。为了实现这个目的需要一些有用的包和一些著名的包——package control,Sublime PHP companion, xDebug client——CodeBug, PHPCS, CodIntel, Simple PHPUnit 和 PHPDoc。

一旦你安装 sublime text 3 作为 PHP IDE ,它会帮助你添加包,你获得的 sublime text 是优雅的,在这里它让你的 PHP 变得强有力,它对于 PHP 开发绝对好用。

关于 Sublime Text,你可以在这里(sublimetext.com)读到更多。

4. Eclipse PDT

Eclipse PDT (PHP Development Tools)是另一款无需任何花费的开源选择。 Eclipse拥有一个庞大的开发者社区致力于开发各种各样的插件,使Eclipse能够具备任何一款如Storms PHP, NetBeans和Zend studio等顶级的开发IDE一样功能。

相比较与商业的IDE,刚开始时需要多做一些工作,但相较于你省下的钱一切都是值得的。与PHPStorm和Zend Studio相较,Eclipse PDT节省授权费是一个很大的优势。如果你是传统的Eclipse爱好者,使用Eclipse PDT会使你感觉很自在。

有的人会说Eclipse会很慢,说实话如果你的系统配置很烂,商业化的产品相较于Eclipse会表现得更好。然而,现在基本的笔记本配置已经能够让Eclipse足够快的运行而不拖你的后腿。

一些关键的特性包括: 语法高亮(syntax highlighting), 代码补齐(code assist), 代码格式化(code formatter), 重构(refactoring), 代码模版(code templates), 代码导航(code navigation), php调试(php debugging), 语法检查(syntax validation) 并且拥有一个庞大的社区的eclipse生态系统来支持它。

开始使用时,你可以下载专用于PHP开发的Eclipse包,它包含了PHP语言支持,XML编辑器,Git客户端和 Mylyn。

软件能够在Mac OS X, Windows 和 Linux系统下下载并使用。你可以了解更多关于Eclipse PDT尽在- eclipse.org/pdt/。

5. VIM

VIM 是在GPL授权下,可以免费下载并使用的开源文本编辑器。它是最先进的文本编辑器之一并且在开发社区内非常的流行。Facebook的工程师在使用自己的Hack语言之前,一直都是使用VIM来编写他们的PHP代码。

我们知道VIM作为一款优秀文本编辑器具有众多的特性,但当你仔细的配置完成后,它提供了不亚于完全成熟的 PHP 开发环境以适用于你的PHP开发。

如果你是只喜欢用键盘来工作的开发者, VIM就很适合你,它模块化,轻量并且快速。

要找一款 Linux下的PHP IDE,VIM 就是你要找的并且它的理念与Sublime Text 3相似, VIM也需要插件来转化成像 PHPStorm 或Netbeans一样的IDE, 最开始你需要花费大量的工作来配置大量的插件,但在最后成功后你会发现一切都是值得的。

VIM显然应该被算做是一款免费的PHP IDE。 你可以在 vim.org上了解更多!

6. Zend Studio

Zend Studio是另一款一流的由Zend公司开发的商用PHP IDE,其目标是成为专业的web开发工具。

Zend公司提供了对PHP的全方位支持,其中任何一件产品都有助于使PHP开发变得轻而易举,该公司拥有的客户数量超过40000。其中一些重要客户包括敦豪速递公司、瑞士信贷、法国巴黎银行和安捷伦科技公司。

Windows、 OS X和Linux均提供了对Zend Studio的支持,并且兼容包括PHP7在内的最新PHP版本。Zend Studio的用户界面很直观,并且提供了大量的现代化功能和工具,通常有助于加速PHP和web的开发进程。其中一些关键功能包括-

  • 在验证、索引和搜索PHP code方面性能更好。
  • 使用Zend Debugger、Xdebug和内置的Z-Ray工具进行调试。
  • 支持Eclipse插件生态系统。
  • 支持Docker和Git流。
  • 支持PHP、Javascript,、CSS和HTML的智能代码编辑。
  • 部署支持,包括提供了对Microsoft Azure和Amazon AWS的云支持。
  • 集成了Zend server,有助于PHP7的快速迁移和无缝连接。

Zend提供了一个有趣而且强大的功能,即支持在现有的PHP应用程序和服务器端进行移动app开发。当要对已有的网站和web app、mobile app进行补充开发时,这个功能就很有用。

要阅读更多有关Zend Studio的内容可访问- Zend Studio for PHP。

7. Atom

Atom是由GitHub人员建立在MIT授权下的免费的现代化的文本编辑器。Atom在其巨大的社区内形成了自己的生态系统,并且拥有众多可用的插件和包来扩展和定义它。

Atom是真正可定制的,也就是说用它的可扩展性和高定制性你可以把它变成你梦想的编辑器。此外,它也是真正的跨平台下的很好选择,它同时支持Windows, OS X, Debian Linux (Ubuntu), Red Hat Linux and Fedora 22+。

如何让Atom变成免费的PHP IDE?

当涉及到PHP时,有很多的可用包可以把Atom编辑器变成全功能的PHP IDE,它不仅仅是免费,更是一款不亚于很多的商业性的PHP IDE。

把atom编辑器变成一款全功能的免费的PHP IDE所涉及到的包有:hyperclick-php, php-cs-fixer, php-integrator-base, linter-php, atom-autocomplete-php等等。这里仅举几个例子。你可以在Github上查看全部的所需清单 -> https://atom.io/packages/search?q=php

想要了解更多请查看atom.io。

8. NuSphere

NuSphere是另一款致力于PHP开发工具的公司,它侧重于网页开发的体验,PHPED是他们提供的IDE产品。

这家公司位于美国内达华州里诺市,它的第一个PHPED的版本发布于PHP刚发展起来的2001年。

而它的最新的版本IDE产品则支持PHP 7以及众多的PHP框架,包括 Laravel, Yii, Symfony等。同时还支持内容管理系统(Content management systems)中的Joomla 和 WordPress。其最新版增加的功能还有支持远行本地和远程项目的测试单元。

总的来说,NuSphere的PHPED是一款全功能的网站开发工具,并包含了JavaScript调试, 带有LESS的CSS预处理, HTML5,当然还有与PHP相关的所有内容。

即便如此,我还是认为在商业领域Zend和PHPStorm比NuSphere更加的优雅,拥有更好的客户支持,更好的文档以及发布管理。

要了解更多关于NuSphere请参考 – nusphere.com.

CodeLobster

有另一款物美价廉的产品叫做CodeLobster与NuSphere可以说是势均力敌。在最近的更新中, CodeLobster走的很激进, 目前它几乎支持了所有的PHP产品包括Twig templates, Drupal, Joomla, wordpress, Yii, Symfony, Laravel, AngularJs, jQuery, Phalcon, smarty, CodeIgniter, CakePHP 以及nodejs。

要了解更多关于NuSphere请参考 – codelobster.com.

9.PHP Designer

PHP Designer是另一个好用的IDE,它能帮助我们加快web开发的工作流程,并提供了对PHP、JavaScript、CSS和HTML的内置支持。该PHP IDE仅供Windows用户使用,如果你使用的是Mac、Linux这类的操作系统,就忽略它吧。

要阅读更多有关PHP Designer的内容可访问PHP Designer。

10.Cloud9-最好的PHP云IDE

Cloud 9是一个支持几乎所有编程语言的云IDE。在基于云的编程环境中,没有任何一个云IDE能在功能和知名度方面和Cloud9相媲美。它提供了内置的PHP调试器,可用来进行实时的代码检查。

开始时,你可以使用其免费版本,在该版本中,你能获得一个免费的公共空间和免费的私有空间,如要进一步学习,就要购买一个Cloud9的商业版。

要阅读更过有关Cloud9的内容可访问cloud9。

结 论

PHP是web开发所使用的最流行、最全面的编程语言,从一开始就有很多PHP IDE可以使用,发展到今天,程序设计方法和PHP IDE都有了翻天覆地的变化。

本文中提到的大部分IDE都有各自不同的特点,但共同的目标是加快web开发的进度,并使得代码可管理和可扩展。仔细看一看,文中列出了一些你的关键需求,你可以从中选择最适合你的需求,肯定至少有一个优秀的Linux系统下的PHP IDE、Mac系统下的PHP IDE和Windows系统下的PHP IDE。

通过你的评论,让我们了解你在PHP编程中的体验和适合你的最佳PHP IDE。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。