leanphp/common-dev

一套现代PHP开发工具和库


README

License Latest Stable Version Total Downloads Travis Pre Release

leanphp/common-dev 是一套现代 PHP 7+ 开发工具和库,可以帮助你编写符合 PHP-FIG 标准和遵循 PHP - The Right Way 指南的最佳实践的 PHP 包和库。

注意! 这些工具可以帮助你编写 经过良好测试 的功能性 & OOP 代码(TDDBDDSOLID)。这个元包应该更多地作为一个开发工具的示例集合,供人们使用。当你想快速修改某些内容时,这个包非常有帮助,但是对于严肃的项目,建议你在项目的 composer.json 中编译一个自定义的开发依赖列表,而不是直接依赖这个包。

请参阅,了解此元包提供的包列表。 使用 部分涵盖了有关各种工具和库的信息。此外,我们还提供了示例配置文件,用于此包提供的各种工具(config/ 目录)。

安装

将此包作为项目中的开发需求进行安装

$ composer require --dev leanphp/common-dev

此包将触发安装各种PHP 和[开发工具](#Development Tools)。

以下是此包安装的PHP库列表

开发工具

以下是该包安装的 PHP 开发工具列表

  • Sami - API 文档生成器。
  • PHPStan - PHP 静态分析工具。
  • PHPMD v2 - PHP 混乱检测器。优化您的代码,减少复杂性,清理未使用的参数、方法、变量等。
  • [PHP_CodeSniffer](#PHP CodeSniffer) v3 - PHP 代码检查器确保您的代码保持清洁和一致。它是一组脚本来检测和自动纠正违反定义的编码标准的违规行为。
  • phpcs-symfony2-standard - 用于 PHP_CodeSniffer 的 Symfony2 编码标准配置。
  • phpcpd - PHP 代码复制/粘贴检测器(CPD)。
  • phploc - 一个可以快速测量 PHP 项目大小的工具。
  • 此包还包括 composer 二进制文件(bin/composer)。

使用方法

注意! 在执行命令时,我们将使用 bin/command 作为示例。这需要在项目的 composer.json 中设置 bin-dir 参数。

    "config": {
        "bin-dir": "bin"
    },

如果没有设置 bin-dir,则在运行命令行工具时使用 ./vendor/bin 前缀。

var-dumper

symfony/var-dumper 是由 Symfony 项目提供的先进变量转储器。它为开发者提供了 dump() 函数,这是比 var_dump()print_r() 更好的替代品。它提供格式良好的输出,根据上下文(控制台、浏览器)进行适应,并包含一些额外的功能。

此包添加了 全局函数 dump(),可以在代码的任何位置调用它。

    <?php
    require 'vendor/autoload.php';

    $date = new \DateTime()
    dump($date)

注意! 尝试在控制台和浏览器中执行上述示例代码片段,以查看差异。

Mockery

Mockery 是一个简单而灵活的 PHP 模拟对象框架,用于与 PHPSpecPHPUnit 进行单元测试。它允许您在测试中模拟对象,从而使测试运行更快,并且不需要直接初始化依赖项。对于另一种方法,请确保查看 Prophecy

Mockery 与 PHPUnit 集成,但可以与任何测试框架一起使用。

有关更多信息,请参阅 Mockery 文档页面

Prophecy

Prophecy 是一个高度定制的 PHP 模拟框架。最初是为 PHPSpec 需求而创建的,但它具有灵活性,可以在任何测试框架中使用(例如 PHPUnitBehat)。它从不同的角度来处理测试,因为它专注于描述对象的未来行为,而不是模拟它们。

更多信息请查看 Github 上的 Prophecy 存储库

Alice

Alice 是一个基于 Faker 的 Expressive Fixtures 生成器。它允许您在开发或测试 PHP 代码时快速创建固定数据(假数据)。当与基于 Symfony、Doctrine、Zend 或任何其他框架的项目一起工作时,Alice 非常有用。为了测试您的软件包,您可以直接使用 Faker

更多信息请查看 GitHub 上的 Alice 存储库

Faker

Faker 是一个用于为您生成假数据的 PHP 库。无论您需要初始化数据库、创建好看的 XML 文档,还是只需要任何假数据,Faker 都是您的选择。如果您需要一个与 Symfony、Doctrine、Zend 或任何其他框架良好集成的解决方案,请查看 Alice(基于 Faker)。

基本假数据使用

<?php

require 'vendor/autoload.php';
// use the factory to create a Faker\Generator instance
$faker = Faker\Factory::create();

// generate data by accessing properties
echo $faker->name;
// 'Lucy Cechtelar';
echo $faker->address;
// "426 Jordy Lodge
// Cartwrightshire, SC 88120-6700"
echo $faker->text;
// Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit
// et sit et mollitia sed.

更多信息请查看 GitHub 上的 Faker 存储库

vfsStream

vfsStream 是一个虚拟文件系统,用于在单元测试中模拟真实文件系统。当您需要在代码中执行文件操作并希望对其进行彻底测试时,它会非常有用。最好通过使用虚拟文件系统来抽象这样的测试,而 vfsStream 允许您做到这一点。

更多信息请查看 GitHub 上的 vfsStream 维基

PHPUnit

PHPUnit 是 PHP 单元测试框架。它是一个经过行业验证的标准 PHP 单元测试框架。如果您喜欢进行简单的 TDD 而不是 BDD - behat(StoryBDD)或 PHPSpec(SpecBDD),则这是您选择的测试工具。

要为您的项目设置 PHPUnit,您可以使用示例 phpunit.xml 配置文件。

将其复制到项目的根目录

$ cp vendor/leanphp/common-dev/config/phpunit.xml phpunit.xml

如果您的测试不是存储在 tests/ 目录中,请调整 phpunit.xml 中的 <testsuites> 标签。该文件提供了额外的注释和设置,这些设置在设置 PHPUnit 以用于您的项目 PHP 包时可能很有用。

运行 PHPUnit 测试

$ bin/phpunit

PHPUnit 将生成各种报告(默认为 build/ 目录),这些报告可用于分析您的代码和测试(例如测试代码覆盖率生成)。

更多信息请查看 PHPUnit 文档

PHPSpec

PHPSpec 是一个用于 PHP 的 SpecBDD(BDD)测试框架。它是一个面向规格的测试框架。它允许您定义测试,然后根据定义的规格生成 PHP 类。PHPSpec 对于单元测试也非常出色。

为了为您的项目设置PHPSpec,您可以使用示例配置文件 phpspec.yml

将其复制到项目的根目录

$ cp vendor/leanphp/common-dev/config/phpspec.yml phpspec.yml

该配置文件将启用此包中安装的所有PHPSpec扩展。

注意! 由于PSR-4规范,您必须在 phpspec.yml 中设置默认的PSR-4命名空间,示例中的 phpspec.yml 中的设置是 LeanPHP\Common请确保将其更改为您的包命名空间!

编写您的第一个spec文件 spec/ClassSpec.php

<?php

namespace spec\LeanPHP\Common;

use PhpSpec\ObjectBehavior;

class ClassSpec extends ObjectBehavior
{
    function it_can_say_hello()
    {
        $this->say('hello')->shouldReturn('hello');
    }
}

运行PHPSpec,根据定义的规范生成类

$ bin/phpspec run

PHPSpec将失败测试,但会要求您为其生成类。

有关更多信息,请查看PHPSpec 文档页面

Behat

behat 是一个用于PHP的ScenarioBDD / BDD测试框架。它允许您使用基于Gherkin语言的易读场景格式定义测试,提供了一个非常基础但有效的测试场景结构。它已成为PHP的ScenarioBDD/BDD标准工具。它与PHPSpecMink良好集成,后者使其非常适合进行 功能测试

为了为您的项目设置Behat,您可以使用示例配置文件 behat.yml

将其复制到项目的根目录

$ cp vendor/leanphp/common-dev/config/behat.yml behat.yml

初始化项目

$ bin/behat --init

该配置文件将启用此包中安装的所有Behat扩展,并将其与PHPSpec集成。

注意! 默认配置使用默认的 mink-goutte-driver 扩展。如果您想与基于Symfony的项目集成,请切换到[mink-browserkit-driver][870]。

有关更多信息,请查看Behat 快速入门并参考Behat 文档页面

Mink

Mink 是一个用于PHP的浏览器模拟/抽象框架。它允许您在测试中模拟浏览器。其功能基于它支持的不同驱动程序。它可以与SeleniumGoutte和其他浏览器集成以运行测试。虽然它可以作为独立的工具使用,但它也是Behat的核心部分,并且除了Behat部分中提到的配置之外,无需任何特殊配置。

有关更多信息,请查看Mink 主页

开发工具

Sami

Sami 是一个API文档生成器。它为您的PHP源代码(类、接口、特质、方法等)生成API文档。您可以查看Symfony API以查看Sami的工作示例。

您可以从示例配置文件 sami.php 开始。

将其复制到项目的根目录

$ cp vendor/leanphp/common-dev/config/sami.php .sami.php

请查看 .sami.php 中的注释并根据您的需要自定义它。

生成API

$ bin/sami update .sami.php

API文档将在 build/docs/<version> 目录中生成,该目录在 .sami.php 中配置。

PHPStan

注意! PHPSten目前由该包提供,因为它与ApiGen冲突。此外,我们认为如果我们也引入PHPStan,我们需要审查其他一些工具的可使用性。

PHPStan 是一个 PHP 静态分析工具。它专注于在代码实际运行之前发现错误。即使在您为代码编写测试之前,它也能捕获整个类的错误。

PHPStan 通过控制台运行

$ bin/phpstan analyse src tests

PHPMD

PHPMD(PHP 混乱检测器)是一个代码优化器,它会扫描您的代码以检测复杂性、未使用参数和方法。它帮助开发者优化他们的 PHP 代码。它还可以指出代码中更多需要重构或过于复杂的问题区域。这是任何 PHP 开发者工具箱中的伟大工具。

PHP Mess Detector 高度可配置,您可以定义不同的 规则。最好使用示例 phpmd.xml 配置文件,它已启用所有规则,并从中进行自定义。

将其复制到项目的根目录

$ cp vendor/leanphp/common-dev/config/phpmd.xml phpmd.xml

PHPMD 通过控制台运行

$ bin/phpmd <SOURCE_DIR> <FORMAT> <RULESET_FILENAME>

您可以在 src/ 目录中为源代码生成文本格式的报告,但需要使用 phpmd.xml 规则集

$ bin/phpmd src/ text phpmd.xml

注意! 在为项目自定义 phpmd.xml 时,请参阅 PHPMD 规则文档

PHP CodeSniffer

PHP_CodeSniffer(#PHP CodeSniffer)确保您的代码保持清洁和一致。它是一组脚本来检测和自动纠正违反定义的编码标准的违规行为。当有多个开发者在同一个项目上工作时,它对于保持代码一致性非常有用。当您单独工作时,它也有帮助,因为它会使您编写更一致的代码。

最好使用示例 phpcs.xml 配置文件,因为它定义了一个基于 Symfony 的编码标准,这将为您提供一个良好的起点。

将示例配置复制到项目的根目录

$ cp vendor/leanphp/common-dev/config/phpcs.xml phpcs.xml

如果您的源代码不在 src/ 目录中,请调整 phpcs.xml 中的 <file> 标签。此外,请确保排除任何测试或构建目录(通过 <exclude-pattern> 标签)。

要获取编码标准违规的列表,请运行 PHP CodeSniffer 工具

$ bin/phpcs

PHP CodeSniffer 还包括一个工具,允许您自动修复许多这些违规行为

$ bin/phpcbf

phpcpd

phpcpd 是一个用于 PHP 代码的复制/粘贴检测器(CPD)。它允许您扫描 PHP 文件并检测重复代码(可能是复制/粘贴)。这是一些可能需要重构的代码。它是提高代码质量的好工具。

要扫描 src/ 目录并检测代码中的问题区域

$ bin/phpcpd src/

phploc

phploc 是一个工具,它可以快速测量您的 PHP 项目的规模。它扫描 PHP 源代码的结构,并返回有关它的各种统计数据(例如类、方法、变量等数量)。

要扫描源代码目录 src/

$ bin/phploc src/

配置

您可以在 config/ 目录中找到工具和库的示例配置文件。包括的示例配置文件有:

这些配置文件必须放置在您的仓库根目录中,或者在使用特定工具时,您需要手动指定配置文件。大多数情况下,在项目根目录中创建文件的副本并对其进行自定义应该足够了。

变更日志

请参阅 CHANGELOG.md 了解变更信息。

作者

版权所有 (c) 2012-2017 ek9 dev@ek9.co (https://ek9.co)

许可证

遵循 MIT 许可证