leanphp / common-dev
一套现代PHP开发工具和库
Requires
- php: ^7.1
- behat/behat: ~3.4
- behat/mink: ~1.7
- behat/mink-browserkit-driver: ~1.3
- behat/mink-extension: ~2.3
- behat/mink-goutte-driver: ~1.2
- ciaranmcnulty/phpspec-typehintedmethods: ~3.0
- escapestudios/symfony2-coding-standard: ^3.1
- fzaninotto/faker: ~1.7
- leanphp/behat-code-coverage: ^3.3
- leanphp/behat-phpspec: 0.7.*
- leanphp/phpspec-code-coverage: ^4.2
- mikey179/vfsstream: ~1.6
- mockery/mockery: ~1.0
- nelmio/alice: ^3.2
- phploc/phploc: ~4.0
- phpmd/phpmd: ~2.6
- phpspec/phpspec: ~4.0
- phpspec/prophecy: ~1.7
- phpstan/phpstan: ~0.9
- phpunit/phpunit: ~7.0
- sami/sami: ~4.0
- sebastian/phpcpd: ~4.0
- squizlabs/php_codesniffer: ~3.0
- symfony/var-dumper: ^3.2||~4.0
- dev-master
- v7.2.0
- v7.1.1
- v7.1.0
- v7.0.0
- v6.4.0
- v6.3.1
- v6.3.0
- v6.2.2
- v6.2.1
- v6.2.0
- v6.1.7
- v6.1.6
- v6.1.5
- v6.1.4
- v6.1.3
- v6.1.2
- v6.0.4
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.6.11
- v5.6.10
- v5.6.9
- v5.6.8
- v5.6.7
- v5.6.6
- v5.6.5
- v5.6.4
- v5.6.3
- v5.6.2
- v5.6.1
- v5.5.3
- v5.5.2
- v5.5.1
- v5.4.5
- v5.4.0
- v4.3.0
- v4.2.0
- v4.1.0
- v4.0.0
- v3.5.0
- v3.4.0
- v3.3.0
- v3.2.0
- v3.1.1
- v3.1.0
- v2.1.0
- v2.0.0
- dev-sami
This package is not auto-updated.
Last update: 2024-09-14 19:58:34 UTC
README
leanphp/common-dev 是一套现代 PHP 7+ 开发工具和库,可以帮助你编写符合 PHP-FIG 标准和遵循 PHP - The Right Way 指南的最佳实践的 PHP 包和库。
注意! 这些工具可以帮助你编写 经过良好测试 的功能性 & OOP 代码(TDD,BDD,SOLID)。这个元包应该更多地作为一个开发工具的示例集合,供人们使用。当你想快速修改某些内容时,这个包非常有帮助,但是对于严肃的项目,建议你在项目的 composer.json
中编译一个自定义的开发依赖列表,而不是直接依赖这个包。
请参阅包,了解此元包提供的包列表。 使用 部分涵盖了有关各种工具和库的信息。此外,我们还提供了示例配置文件,用于此包提供的各种工具(config/
目录)。
安装
将此包作为项目中的开发需求进行安装
$ composer require --dev leanphp/common-dev
包
此包将触发安装各种PHP 库 和[开发工具](#Development Tools)。
库
以下是此包安装的PHP库列表
- symfony/var-dumper v3 - Symfony项目的高级变量转储器(使用
dump()
代替var_dump()
)。 - Mockery v1.0 - 用于单元测试的简单而灵活的PHP模拟对象框架。
- Prophecy - 高度偏好的PHP模拟框架。
- Alice - 基于 Faker 的表达式固定生成器。
- Faker - 用于生成虚假数据的PHP库。
- vfsStream - 虚拟文件系统,用于在单元测试中模拟真实的文件系统。
- PHPUnit v6 - PHP单元测试框架。
- PHPSpec v4 - 带扩展的PHP SpecBDD / BDD测试框架。
- phpspec-code-coverage - PHPSpec 的代码覆盖率。
- phpspec-typehintedmethods - 生成类型提示方法
- behat v3 - 带扩展的PHP ScenarioBDD / BDD测试框架
- behat/mink-extension - Mink 的扩展,用于 behat。
- behat/mink-goutte-driver - Goutte 驱动程序,用于 Mink。
- behat/mink-browserkit-driver - 用于 Mink 的 Symfony BrowserKit 驱动程序。
- Mink - 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 模拟对象框架,用于与 PHPSpec 或 PHPUnit 进行单元测试。它允许您在测试中模拟对象,从而使测试运行更快,并且不需要直接初始化依赖项。对于另一种方法,请确保查看 Prophecy。
Mockery 与 PHPUnit 集成,但可以与任何测试框架一起使用。
有关更多信息,请参阅 Mockery 文档页面。
Prophecy
Prophecy 是一个高度定制的 PHP 模拟框架。最初是为 PHPSpec 需求而创建的,但它具有灵活性,可以在任何测试框架中使用(例如 PHPUnit,Behat)。它从不同的角度来处理测试,因为它专注于描述对象的未来行为,而不是模拟它们。
更多信息请查看 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标准工具。它与PHPSpec和Mink良好集成,后者使其非常适合进行 功能测试。
为了为您的项目设置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的浏览器模拟/抽象框架。它允许您在测试中模拟浏览器。其功能基于它支持的不同驱动程序。它可以与Selenium、Goutte和其他浏览器集成以运行测试。虽然它可以作为独立的工具使用,但它也是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/
目录中找到工具和库的示例配置文件。包括的示例配置文件有:
- apigen.yaml - ApiGen 示例配置。
- phpcs.xml - [PHP_CodeSniffer](#PHP CodeSniffer) 编码标准配置。
- phpmd.xml - PHPMD 示例配置。
- phpunit.xml - PHPUnit 示例配置。
- phpspec.yml - phpspec 示例配置。
- behat.yml - behat 示例配置。
这些配置文件必须放置在您的仓库根目录中,或者在使用特定工具时,您需要手动指定配置文件。大多数情况下,在项目根目录中创建文件的副本并对其进行自定义应该足够了。
变更日志
请参阅 CHANGELOG.md 了解变更信息。
作者
版权所有 (c) 2012-2017 ek9 dev@ek9.co (https://ek9.co)
许可证
遵循 MIT 许可证。