当前位置: 首页 > 后端技术 > PHP

这才是现代php该有的样子(2)

时间:2023-03-30 01:05:05 PHP

本文来自medium----原文链接;欢迎加入我们的php&Laravel学习群:109256050你需要开始使用测试了这是我每天对自己说的话。像许多人一样,我不会按照TDD建议的方式测试我的代码。我现在在用测试,已经做了半年了,还有很长的路要走。我决定在处理一个复杂的遗留项目时学习测试。代码是如此脆弱和僵硬,以至于我们一添加一些代码它就会崩溃。新功能?实现并摧毁一些东西!修复错误?创建另一个。这是一个大问题,让我开始尝试测试它。第一个工具是PHPUnit。正如官网所说,PHPUnit是一个面向程序员的PHP测试框架。这是单元测试框架xUnit架构的一个实例。因此,PHPUnit是一个测试框架,可帮助您创建项目、单元测试。它提供了几个函数来测试代码的结果,并产生与测试结果相同的良好输出。自从我开始考虑测试、阅读和与人们谈论测试以来,我发现了另一个很好的工具来补充我之前的单元测试工作,它是Behat,一个BDDPHP框架。BDD(BehaviorDrivenDevelopment)是从TDD(TestDrivenDevelopment)衍生出来的一种开发过程。这些首字母缩略词现在并不重要,重要的是您可以用非技术人员也能理解的更自然的语言来解释您的测试。这种语言称为Gherkin,用于描述被测的预期行为。使用小黄瓜看起来像这样。在这些描述的背后,只要phpDoc中描述的指定方法有一个规则模式匹配相应的php代码就会被调用,通过SDK、应用程序或web系统,这些代码实现这些步骤,模拟真实用户会做的事情如此顺利行为。正确配置所有内容后,您可以开始编写所有可能的场景来测试功能。运行behat后,它会为您提供应添加到PHP环境类中的所有方法模板,以便实现场景的每个步骤,您开始为每个步骤编写实际代码,并不断重复该循环。实现一步php代码,运行测试。如果运行正常,继续执行下一步的php代码。如果有异常,修复它。经过一个半小时的配置并阅读文档后,您就可以开始使用Behat了。最后,你看到的一切都是php代码,你已经知道如何编写它持续集成持续集成(CI)是一个过程-一种做某事的方式,对我们软件工程师来说,就是创建软件。简而言之,它是将小块代码(可能一天几次)持续集成到代码库中的行为。代码将经过测试并且没有异常。CI帮助您自动化应用程序的构建、测试和部署。只需点击几下,您就可以将您的GitHub项目与TravisCI集成,每次推送到存储库时都会运行您编写良好的PHPUnit和Behat测试,这会告诉您最终实现的功能是否已准备好合并。除此之外,您还可以使用TravisCI将代码部署到生产环境和暂存区。通过一个明确指定的程序实现一个好的工作流程是很棒的,TravisCI可以帮助你。跟随这个伟大的开始,发现思考软件开发过程是多么有趣,而不仅仅是代码本身。关注PSR-1和PSR-2如果您以前不知道PSR是什么,现在是时候了解一下了。实际上PSR代表PHPStandardRecommendation(PHP规范推荐),PHP-FIG推荐使用它们。PHP-FIG是一个成员来自最大的PHP项目、框架和CMS系统的组织,它致力于思考和讨论语言的未来、生态系统和应遵循的PHP规范。PHP很长一段时间没有编码风格。我没那么老,但每次看到别人的项目或图书馆,他们都有不同的风格。有时将括号放在一个地方,有时将其放在下一行,处理长代码行的不同方式,以及其他样式和偏好的组合。真是一团糟。PHP-FIG做了很多其他的事情,但是为了提出一个统一的代码,他们说:“让我们不再担心代码风格,让我们都遵循相同的标准,并开始考虑创建伟大的软件”。现在,每当你看别人的代码时,你只关心它是如何工作的,而不是格式和结构。文末共有9个被采纳的PSR作为常见问题的推荐解决方案。但如果您不知道这些标准,请使用PSR-1和psr-2作为起点。这些标准表明了现代PHP编码风格。在开始之前一定要阅读它们。不要以为您会在编写代码时记住所有代码,这是一个过程,但为了让您确定所使用的规格,有一些工具可以帮助您做到这一点。PHPCodeSniffer是一个可以在Packagist上找到的工具,使用Composer安装它。我不认为这个库名称是最好的选择,因为它包含两个不同的工具,phpcbfPHPCs。Phpcs代码嗅探器,它会扫描您的整个代码,寻找与配置的编码标准不匹配的代码部分。您可以通过PHPC使用各种编码标准,甚至可以创建自己的标准。在代码扫描结束时,PHPCs会列出不符合标准的代码片段。它非常容易使用。现在,我该如何修复所有有问题的代码片段?您可以打开所有文件,更改代码,运行PHPC,直到您看到错误没有出现,然后重复该过程。那会很无聊。为了解决这个问题,PHPcodesniffer的一个名为phpcbf的工具应运而生,或者说成为PHP代码美化工具。它会尝试修复所有错误,使其符合相同的代码规范,而不会破坏您的代码。尝试养成使用phpcs和phpcbf的习惯,在将代码推送到您的存储库之前检查您的代码,这将确保您编写的代码是合规的,一旦有人喜欢您的项目并想要贡献,他们就会阅读代码来没问题。框架我不想花太多时间讨论框架,下面有一个很好的框架,每个框架都有自己的优点和缺点,就我而言,我不喜欢使用这些封装一切的大框架。我喜欢用我需要的东西。如果你需要像Guzzle这样的HTTP客户端。如果你需要你的模板引擎,比如Twig。如果你需要一个路由器。找到适合您的组件并使用它们,将它们组合起来构建您自己的应用程序。Symfony为这个概念做了很多,你可以将整个框架作为一个项目使用,或者如上所述使用你需要的任何组件。但是,每当我需要使用框架来编写应用程序时,我通常会选择微框架。它们真的很小,只提供最基本的组件,而且很容易定制。我选择的微框架是Slimframework,我觉得大家应该试一试。顺便说一句,对于刚接触编程的人,我真的建议在采用和使用框架之前,您应该尝试构建自己的框架。这将使您大致了解整个过程的工作原理。并在以后采用大型框架时更容易理解。现代PHP工具让我们以链接、组件、工具和库的列表结束本文,对我来说,它们代表了现代PHP带来的伟大思想:Guzzle:一个简单易用的HTTP客户端Behat:一个行为驱动的开发框架PHPCS/CBF:代码检查和美化Faker:一个虚拟数据生成器Psysh:包含很棒的功能即时开发控制台Composer:依赖管理和一些其他有用的功能Packagist:第三方库存储库Twig:模板引擎也在进步(可能更快)。