gacela-project / phpstan-extension
PHPStan rule for projects using Gacela
Fund package maintenance!
chemaclass.com/sponsor
Installs: 854
Dependents: 3
Suggesters: 1
Security: 0
Stars: 4
Watchers: 3
Forks: 0
Open Issues: 4
Type:phpstan-extension
Requires
- php: >=8.0
- gacela-project/gacela: >=0.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.62
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^9.6
- psalm/plugin-phpunit: ^0.18
- symfony/var-dumper: ^5.4
- vimeo/psalm: ^5.25
Suggests
- gacela-project/gacela: Gacela helps you build modular PHP applications. It helps normalizing the entry point of a module, without interfering with your domain-business logic.
README
This is a PHPStan extension for Gacela Framework. This enforces module boundaries.
See main Gacela project for more information.
Installation
composer require --dev gacela-project/phpstan-extension
Configuration
To configure this PHPStan extension you need 2 things.
Base module namespace
It is assumed that all your modules are under the same namespace. Assume the namespaces for your modules are:
App\Modules\ModuleA
App\Modules\ModuleB
The base namespace for your modules is App\Modules
.
Excluded namespaces (Optional)
If you have namespace that hold code that can be used by any module (e.g. App\Shared
),
then you need to add them to excludedNamespaces
. Default: []
.
Update PHPStan configuration
Update your project's phpstan.neon
file:
includes: - vendor/gacela-project/phpstan-extension/extension.neon parameters: gacela: modulesNamespace: <base module namespace> excludedNamespaces: - excluded - namespaces
Examples
Example without excludedNamespaces
includes: - vendor/gacela-project/phpstan-extension/extension.neon parameters: gacela: modulesNamespace: App\Modules
Full example
includes: - vendor/gacela-project/phpstan-extension/extension.neon parameters: gacela: modulesNamespace: App\Modules excludedNamespaces: - App\Shared
Usage
Run PHPStan as usual. It will additional point out any violations of module boundaries.