Download the PHP package juampi92/phpstan-eloquent-bounded-context without Composer
On this page you can find all versions of the php package juampi92/phpstan-eloquent-bounded-context. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download juampi92/phpstan-eloquent-bounded-context
More information about juampi92/phpstan-eloquent-bounded-context
Files in juampi92/phpstan-eloquent-bounded-context
Package phpstan-eloquent-bounded-context
Short Description PHPStan rules that make sure your models are only being mutated from within its Domain.
License MIT
Informations about the package phpstan-eloquent-bounded-context
PHPStan Extension: Eloquent Bounded Context
A set of PHPStan rules to make sure your models are only being mutated from within their Domains.
Description
These rules will detect when your Eloquent Model is being mutated outside of its Domain. The moment the Model leaves the Domain namespace, it becomes read-only.
Let's assume the following structure:
If app/Http/Controllers/PostController.php
has the following method:
PHPStan will fail saying:
To fix this error, instead of calling
save
inside the Controller directly, create an Action inside the Post domain (or a PostService class) and use that class to create and persist the model.
This package will also detect:
- Model attribute mutations like:
$post->title = 'My title';
, - Methods persist the data in the database, like
save
,update
,delete
, etc, - Static methods that persist the data, like
::create()
,::updateOrCreate()
, etc.
Installation
To use this extension, require it in Composer:
If you also install phpstan/extension-installer then you're all set!
Manual installation
If you don't want to use `phpstan/extension-installer`, include extension.neon in your project's PHPStan config:Configuration
No configuration
If your models are placed inside their Domain folder, the package will know they are not using Laravel's default folders, and assume the domain is App/Domains/Posts
. Any class inside that domain is allowed to mutate an eloquent model.
Manual configuration
If your models are placed inside App\Models
, then you will have to configure your domain manually.
To do so, you must first create a configuration file that holds the information about your models and domains:
And after you must reference this file inside the phpstan.neon.dist
config:
Configuring ignored namespaces
You might want to ignore some namespaces and allow Models to be modified there.
Contribute
Features to do:
- [ ] Ignore no-configuration resolution when a config is used.
- [ ] Propose /* @mutates / tag or #Attribute to prohibit these methods being called outside of the domain.
Testing
Credits
- Juan Pablo Barreto
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of phpstan-eloquent-bounded-context with dependencies
illuminate/support Version ^7.0|^8.0|^9.0
illuminate/database Version ^7.0|^8.40|^9.0
ext-json Version *
phpstan/phpstan Version ^1.0
symfony/yaml Version ^5.0|^6.0