Created
September 26, 2026 11:07
-
-
Save ianrodrigues/7561231075384284a11e6b08eb7db51e to your computer and use it in GitHub Desktop.
PHPStan leveraging `spaze/phpstan-disallowed-calls`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| includes: | |
| - vendor/larastan/larastan/extension.neon | |
| - vendor/nesbot/carbon/extension.neon | |
| - vendor/spaze/phpstan-disallowed-calls/extension.neon | |
| parameters: | |
| phpVersion: 80500 | |
| checkAuthCallsWhenInRequestScope: true | |
| checkConfigTypes: true | |
| parseModelCastsMethod: true | |
| tmpDir: storage/framework/cache/phpstan | |
| paths: | |
| - app/ | |
| - bootstrap/app.php | |
| - config/ | |
| - database/ | |
| - routes/ | |
| level: max | |
| disallowedMethodCalls: | |
| - | |
| method: | |
| - 'App\Models\*::decrement()' | |
| - 'App\Models\*::increment()' | |
| - 'Illuminate\Database\Eloquent\Model::decrement()' | |
| - 'Illuminate\Database\Eloquent\Model::decrementQuietly()' | |
| - 'Illuminate\Database\Eloquent\Model::delete()' | |
| - 'Illuminate\Database\Eloquent\Model::deleteOrFail()' | |
| - 'Illuminate\Database\Eloquent\Model::deleteQuietly()' | |
| - 'Illuminate\Database\Eloquent\Model::fill()' | |
| - 'Illuminate\Database\Eloquent\Model::forceDelete()' | |
| - 'Illuminate\Database\Eloquent\Model::forceFill()' | |
| - 'Illuminate\Database\Eloquent\Model::increment()' | |
| - 'Illuminate\Database\Eloquent\Model::incrementQuietly()' | |
| - 'Illuminate\Database\Eloquent\Model::push()' | |
| - 'Illuminate\Database\Eloquent\Model::pushQuietly()' | |
| - 'Illuminate\Database\Eloquent\Model::save()' | |
| - 'Illuminate\Database\Eloquent\Model::saveOrFail()' | |
| - 'Illuminate\Database\Eloquent\Model::saveQuietly()' | |
| - 'Illuminate\Database\Eloquent\Model::touch()' | |
| - 'Illuminate\Database\Eloquent\Model::touchQuietly()' | |
| - 'Illuminate\Database\Eloquent\Model::update()' | |
| - 'Illuminate\Database\Eloquent\Model::updateOrFail()' | |
| - 'Illuminate\Database\Eloquent\Model::updateQuietly()' | |
| message: 'change model state through an intention-named model method' | |
| allowInInstanceOf: | |
| - 'Illuminate\Database\Eloquent\Model' | |
| allowIn: | |
| - database/* | |
| - | |
| method: | |
| - 'Illuminate\Database\Eloquent\Builder::decrement()' | |
| - 'Illuminate\Database\Eloquent\Builder::decrementEach()' | |
| - 'Illuminate\Database\Eloquent\Builder::delete()' | |
| - 'Illuminate\Database\Eloquent\Builder::forceDelete()' | |
| - 'Illuminate\Database\Eloquent\Builder::increment()' | |
| - 'Illuminate\Database\Eloquent\Builder::incrementEach()' | |
| - 'Illuminate\Database\Eloquent\Builder::insert()' | |
| - 'Illuminate\Database\Eloquent\Builder::insertGetId()' | |
| - 'Illuminate\Database\Eloquent\Builder::insertOrIgnore()' | |
| - 'Illuminate\Database\Eloquent\Builder::touch()' | |
| - 'Illuminate\Database\Eloquent\Builder::update()' | |
| - 'Illuminate\Database\Eloquent\Builder::updateOrCreate()' | |
| - 'Illuminate\Database\Eloquent\Builder::updateOrInsert()' | |
| - 'Illuminate\Database\Eloquent\Builder::upsert()' | |
| message: 'bulk writes bypass model invariants; move them into a model method' | |
| allowInInstanceOf: | |
| - 'Illuminate\Database\Eloquent\Model' | |
| allowIn: | |
| - database/* | |
| - | |
| method: | |
| - 'Illuminate\Database\Eloquent\Relations\BelongsToMany::detach()' | |
| - 'Illuminate\Database\Eloquent\Relations\BelongsToMany::sync()' | |
| - 'Illuminate\Database\Eloquent\Relations\BelongsToMany::syncWithPivotValues()' | |
| - 'Illuminate\Database\Eloquent\Relations\BelongsToMany::syncWithoutDetaching()' | |
| - 'Illuminate\Database\Eloquent\Relations\BelongsToMany::toggle()' | |
| - 'Illuminate\Database\Eloquent\Relations\BelongsToMany::updateExistingPivot()' | |
| - 'Illuminate\Database\Eloquent\Relations\BelongsToMany::updateOrCreate()' | |
| - 'Illuminate\Database\Eloquent\Relations\HasOneOrMany::updateOrCreate()' | |
| message: 'relation writes bypass model invariants; move them into a model method' | |
| allowInInstanceOf: | |
| - 'Illuminate\Database\Eloquent\Model' | |
| allowIn: | |
| - database/* | |
| disallowedClasses: | |
| - | |
| class: | |
| - 'DomainException' | |
| - 'Exception' | |
| - 'RuntimeException' | |
| message: 'throw an application exception from app/Exceptions' | |
| allowExceptIn: | |
| - app/Actions/* | |
| - app/Models/* | |
| - app/Queries/* | |
| disallowedStaticCalls: | |
| - | |
| method: | |
| - 'Illuminate\Database\Eloquent\Model::destroy()' | |
| message: 'change model state through an intention-named model method' | |
| allowInInstanceOf: | |
| - 'Illuminate\Database\Eloquent\Model' | |
| allowIn: | |
| - database/* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment