PHPArkitect 项目介绍
PHPArkitect 是一个专为 PHP 项目设计的工具,它旨在帮助开发者维护代码的一致性和稳固性。通过添加架构约束检查,PHPArkitect 允许开发者在代码库中执行自动化规则检测,从而确保代码的结构符合预期的设计原则。
项目安装
PHPArkitect 提供了两种安装方式:使用 Composer 和使用 Phar 文件。对于依赖项可能产生冲突的项目,可以选择使用 Phar 文件,因为它是一个自包含的 PHP 可执行文件。
使用 Composer
要通过 Composer 安装 PHPArkitect,只需在终端执行以下命令:
composer require --dev phparkitect/phparkitect
使用 Phar 文件
如果项目中存在依赖冲突,可以通过下载 Phar 文件来执行 PHPArkitect。使用以下命令下载并运行:
wget https://github.com/phparkitect/arkitect/releases/latest/download/phparkitect.phar
chmod +x phparkitect.phar
./phparkitect.phar check
如何使用
一旦安装完成,可以在命令行中使用 phparkitect check
命令来运行工具。默认情况下,它会在项目根目录下寻找名为 phparkitect.php
的配置文件。开发者也可以通过 --config
参数来指定其他配置文件。默认执行时,会有一个进度条显示当前分析的进度。
使用基线文件
如果代码中有许多当前无法修复的违规,开发者可以使用基线功能来忽略过去的违规。通过运行以下命令生成基线文件:
phparkitect check --generate-baseline
生成的基线文件是 JSON 格式的,默认名为 phparkitect-baseline.json
。可以通过 --use-baseline
参数指定不同的基线文件,也可以通过 --skip-baseline
参数来忽略默认基线文件。
配置示例
以下是一个简单的配置文件示例:
<?php
declare(strict_types=1);
use Arkitect\ClassSet;
use Arkitect\CLI\Config;
use Arkitect\Expression\ForClasses\HaveNameMatching;
use Arkitect\Expression\ForClasses\NotHaveDependencyOutsideNamespace;
use Arkitect\Expression\ForClasses\ResideInOneOfTheseNamespaces;
use Arkitect\Rules\Rule;
return static function (Config $config): void {
$mvcClassSet = ClassSet::fromDir(__DIR__.'/mvc');
$rules = [];
$rules[] = Rule::allClasses()
->that(new ResideInOneOfTheseNamespaces('App\Controller'))
->should(new HaveNameMatching('*Controller'))
->because('we want uniform naming');
$rules[] = Rule::allClasses()
->that(new ResideInOneOfTheseNamespaces('App\Domain'))
->should(new NotHaveDependencyOutsideNamespace('App\Domain'))
->because('we want protect our domain');
$config->add($mvcClassSet, ...$rules);
};
规则示例
PHPArkitect 支持多种规则检查。以下列出了一些常用的规则示例:
- 依赖特定命名空间:检查一个类是否仅依赖于特定的命名空间。
- 文档块包含/不包含指定字符串:检查类的 DocBlock 注释中是否包含特定字符串。
- 扩展特定类或实现特定接口:在某些命名空间下,所有类都应该扩展某个基类或实现特定接口。
- 遵循命名模式:确保类名符合约定的命名模式,如以“Controller”结尾。
扩展性和组件架构规则生成器
PHPArkitect 提供了规则生成器,帮助开发者使用可读性更高的方式定义规则。利用这些生成器,开发者可以为应用定义组件,并在组件之间强制执行依赖约束。
集成
对于使用 Laravel 框架的开发者,可以使用社区提供的 Laravel Arkitect 扩展,它提供了一些预定义的规则,使得 Laravel 项目中的架构检查更加便捷。
总结来说,PHPArkitect 是一款强大且灵活的工具,帮助开发者在 PHP 项目中实施严谨的架构规则,确保代码符合最佳实践和设计规范。