这就是现代php该有的样子(二)

本文来自medium----原文连接; 欢迎做客咱们的php&Laravel学习群:109256050php

你须要开始使用测试

这是我天天对本身说的话。像不少人同样,我不会像TDD所建议的那样测试个人代码。我如今在使用测试,在过去的半年里一直这样作,前面还有很长的路要走。程序员

我是在处理复杂的遗留项目时决定学习测试。代码是如此的脆弱和僵硬,以致于一旦咱们添加一些代码就会破坏它。新的特征?实现和破坏某事!修复错误?新建另外一个。编程

这是一个大问题,并让我开始尝试测试。架构

第一个工具是PHPUnit。如官方网站所述框架

PHPUnit是PHP的面向程序员的测试框架。函数

这是单元测试框架xUnit架构实例。工具

因此,PHPUnit是帮助您建立您的项目的测试框架,单元测试。它提供了几个函数来测试代码的结果,并生成与这些测试结果相同的良好输出。单元测试

自从我开始思考测试、阅读、和于人交谈测试,我发现了另外一个伟大的工具,它是对之前那些单元的测试工做的补充,它就是Behat,这是一个BDD的PHP框架。学习

BDD(行为驱动开发)是一个来自TDD(测试驱动开发)的开发过程。这些缩写词如今并不重要,重要的是你可使用更天然的语言来讲明你的测试,这种语言对于非技术人员也能够理解它。测试

这种语言被称为Gherkin,是用来描述被测试的预期的行为。使用Gherkin看起来像这样

在这些描述背后,每当描述于phpDoc中的指定的方法有正则模式匹配相应的php代码就会被调用,经过SDK、应用程序或Web系统,这些代码实现了这些步骤,模拟真实的用户将作的

使用Behat工做是如此顺利。在一切正确配置以后,您开始编写测试一个特性的全部可能场景。一旦你运行behat,它给你全部你应该添加到您的PHP环境类的方法模版以便实施场景的每一步

以后,您开始编写每一步的实际代码,并继续重复这个循环。

  • 实现一个步骤的php代码
  • 运行测试
  • 若是运行正常,继续实现下一步的php代码
  • 若是有异常,修复它

在经历一个半小时的配置和阅读文档后,你能够开始使用Behat,到最后你看到的都是php代码而后你就已经知道了怎么编写它

持续集成

持续集成(CI)是一个过程——一种作某事的方法,而这一点对于咱们的软件工程师来讲,就是创造软件。

简单地说,它是将小代码块(也许天天几回)不断的整合到代码库中的行为。代码将被测试而且没有异常。CI帮助您自动化应用程序的构建、测试和部署。

经过几回点击,你能够经过Travis CI集成你的GitHub项目,每次推送到仓库后会运行你以写好的PHPUnit和Behat测试,这些测试告诉你最后实现的特色是否准备好,是否要合并。除此以外,您还可使用Travis CI将代码部署到生产环境和暂存。

经过一个被良好规范的程序实现一个良好的工做流程是极好的,Travis CI能够帮助你作这项工做。遵循这个好的开始,发现对软件开发过程的思考是多么有趣,而不只仅是代码自己。

遵循PSR-1 和 PSR-2

若是你之前不知道PSR是什么,那么如今你应该去了解了。实际上PSR表明PHP Standard Recommendation(PHP规范推荐),PHP-FIG建议使用它们。PHP—FIG是一个成员来自最大的PHP项目、框架和CMS系统的一个组织,它致力于对语言的将来、生态系统的思考和讨论应被遵循的PHP规范

很长一段时间以来PHP都没有编码风格。我没有那么老,但每次我看到别人的项目或库时,它们的风格都不一样。有时把括号放在一个位置,有时把它放在下一行,用不一样的方法来处理长长的一行代码,还有其余风格和喜爱的组合。真是一团糟。

PHP—FIG作许多其余的工做,但提出一个统一的代码,他们说:“让咱们中止操心代码风格,让咱们每一个人都遵循同一个标准,并开始思考创造伟大的软件”。如今,每当你查看某人的代码时,你只会操心它是如何工做的,而不是研究格式、结构。

在文章的最后,一共有9种被接受的PSRs为解决常见问题的推荐解决方案。但若是你不知道这些标准的话,以PSR-1和psr-2做为起点。

这些标准提出了现代PHP编码风格。请务必在开始使用以前阅读它们。不要认为在编写代码时你会记住全部的代码,这是一个过程,但为了让你肯定你使用的规范,有一些工具能够帮助你完成它。 PHP CodeSniffer是一种工具,你能够在Packagist上找到它,使用Composer安装它。我不认为这个库名称是最好的选择,由于它包含两种不一样的工具,分别是phpcbf PHPCs。

Phpcs代码嗅探器,它会扫描你的整个代码,查找与配置的编码标准不符的代码部分。

您能够经过PHPCs使用多种编码标准你甚至能够建立你本身的标准。在代码扫描结束,PHPCs列出不遵循标准的代码片断。真是太好用了。

如今,如何修改全部的错误的代码片断?你能够打开全部的文件,更改代码,运行PHPCs直到看到错误不显示出来,并重复上述过程。这样会很无聊。

为了解决这一问题,PHPcodesniffer的一个称为phpcbf的工具发挥做用了,或成为PHP代码美化工具。它在不破坏你的代码的前提下尽力修复全部的错误使之符合相同的代码规范。

试着养成习惯,在push你的代码到你的仓库以前使用phpcs和phpcbf检查代码,这将保证你所写的代码都符合规范,一旦有人喜欢你的项目并想贡献时,他们阅读起代码来毫无问题。

框架

我不想花太多的时间讨论框架,下面有一个好的框架,各有优缺点,就我而言,我不喜欢使用这些封装来全部东西的大框架。我喜欢须要什么就使用什么。

若是你须要一个HTTP 客户端,好比Guzzle。若是你须要你个模版引擎好比Twig。若是你须要一个路由器。找到适合你的组建并使用他们,将他们组合起来构建你本身的应用。

Symfony为这个概念作了不少,你可使用这整个框架做为一个项目,也能够像上面所述使用任何你须要的组建。

然而,每当我须要使用框架来写应用,我一般会选择微型框架。它们真的很小,近提供最基础的组件,而且十分的容易定制。

个人微型框架选择是Slimframework,我认为你们都应该去试试它。

顺便提一下,对于刚学编程的人来讲,我真的建议在采用框架和使用前,你应该试着创建一个你本身的框架。这将让你对这整个的工做机制有个总体的了解。并让你在之后采用大型框架时更容易理解。

现代PHP工具

让咱们以一组连接表来结束这篇文章,对于我来讲,这些组件和工具和库就表明来现代PHP的伟大思想:

  • Slimframework:一个既好又酷的微型框架
  • Symfony : 一个拥有伟大和可复用组件的大一点的框架
  • Guzzle : 一个简单和好用HTTP客户端
  • Behat : 一个行为驱动开发框架
  • PHPCS/CBF : 代码检查和美化
  • Faker : 虚拟数据生成器
  • Psysh:充满极好的功能的即时开发控制台
  • Composer : 依赖管理和其余的一些有用的特点
  • Packagist : 第三方库仓库
  • Twig : 模版引擎

我知道这个标题确实很自负,在这里我真正想说的是PHP正在进步,它的生态系统一样也在进步(可能更快)。

相关文章
相关标签/搜索