mintware-de / phpstan-namespace-constraints
一个PHPStan规则,用于限制命名空间使用以控制依赖继承。
v1.0.3
2024-03-27 12:13 UTC
Requires
- php: ^7.1 || ^8.0
- nikic/php-parser: ^4.13 || ^5.0
- phpstan/phpstan: ^0.12.99 || ^1.4.8
Requires (Dev)
- brainmaestro/composer-git-hooks: ^2.8
- friendsofphp/php-cs-fixer: ^3.7
- phpunit/phpunit: ^9.5
README
此存储库包含PHPStan的命名空间约束规则的代码。
为什么?
在大多数架构中,你不应该依赖所有内容。使用此规则,你可以确保源命名空间(正则表达式模式)只能依赖于目标命名空间中的代码。
安装
$ composer require --dev mintware-de/phpstan-namespace-constraints
配置
将以下内容添加到你的 phpstan.neon
# phpstan.neon includes: - vendor/mintware-de/phpstan-namespace-constraints/src/Rules/rules.neon parameters: namespace_constraints: constraints: - from: 'App\\SourceNamespace(\\.*)?' # Everything inside this namespace has access to to: ['App\\SourceNamespace(\\.*)?'] # this namespace
示例
简单
# phpstan.neon includes: - vendor/mintware-de/phpstan-namespace-constraints/src/Rules/rules.neon parameters: namespace_constraints: constraints: - from: 'App\\Core(\\.*)?' to: ['App\\Core(\\.*)?'] - from: 'App\\Data(\\.*)?' to: - 'App\\Core(\\.*)?' - 'App\\Data(\\.*)?' - from: 'App\\UserInterface(\\.*)?' to: - 'App\\Core(\\.*)?' - 'App\\Data(\\.*)?' - 'App\\UserInterface(\\.*)?'
高级
# phpstan.neon includes: - vendor/mintware-de/phpstan-namespace-constraints/src/Rules/rules.neon parameters: namespace_constraints: constraints: # App\User Constraints - from: 'App\\User\\Core(\\.*)?' to: ['App\\User\\Core(\\.*)?'] # App\\Blog\ Constraints - from: 'App\\Blog\\Core(\\.*)?' to: ['App\\Blog\\Core(\\.*)?'] # App\*\Core -> App\Shared\Core - from: 'App\\(\w+)\\Core(\\.*)?' to: ['App\\Shared\\Core(\\.*)?']