Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Phpstan Rules Laravel Package

ergebnis/phpstan-rules

A set of extra PHPStan rules to enforce stricter, opinionated code standards in PHP projects. Install via Composer and include rules.neon (auto via phpstan/extension-installer) to catch issues like named arguments, class design, and more.

View on GitHub
Deep Wiki
Context7
`2.9.0`

For a full diff see [2.8.0...2.9.0][2.8.0...2.9.0].

Added

  • Added CallLikes\NoNamedArgumentRule, which reports an error when an anonymous function, a function, or a method is invoked using a named argument ([#914]), by [@localheinz]

Changed

  • Required phpstan/phpstan:^2.1.8 ([#938]), by [@localheinz]
`2.8.0`

For a full diff see [2.7.0...2.8.0][2.7.0...2.8.0].

Added

  • Added allRules parameter to allow disabling and enabling all rules ([#913]), by [@localheinz]
  • Added Expressions\NoAssignByReferenceRule, which reports an error when a variable is assigned by reference ([#914]), by [@localheinz]
`2.7.0`

For a full diff see [2.6.1...2.7.0][2.6.1...2.7.0].

Added

  • Added Closures\NoParameterPassedByReferenceRule, Functions\NoParameterPassedByReferenceRule, Methods\NoParameterPassedByReferenceRule, which report an error when a closure, a function, or a method has a parameter that is passed by reference ([#911]), by [@localheinz]
  • Added Functions\NoReturnByReferenceRule and Methods\NoReturnByReferenceRule, which report an error when a function or a method returns by reference ([#912]), by [@localheinz]
`2.6.1`

For a full diff see [2.6.0...2.6.1][2.6.0...2.6.1].

Fixed

  • Adjusted Methods\NoParameterWithNullableTypeDeclarationRule to use the appropriate error identifier ([#902]), by [@manuelkiessling]
`2.6.0`

For a full diff see [2.5.2...2.6.0][2.5.2...2.6.0].

Added

  • Added support for phpstan/phpstan:^2.0.0 ([#873]), by [@localheinz]
`2.5.2`

For a full diff see [2.5.1...2.5.2][2.5.1...2.5.2].

Fixed

  • Adjusted Closures\NoNullableReturnTypeDeclarationRule, Closures\NoParameterWithNullableTypeDeclarationRule, Functions\NoNullableReturnTypeDeclarationRule, Functions\NoParameterWithNullableTypeDeclarationRule, Methods\NoNullableReturnTypeDeclarationRule, Methods\NoParameterWithNullableTypeDeclarationRule to detect cases where null is referenced with incorrect case or relative to the root namespace ([#897]), by [@localheinz]
`2.5.1`

For a full diff see [2.5.0...2.5.1][2.5.0...2.5.1].

Fixed

  • Returned rule with error identifier ([#882]), by [@localheinz]
  • Adjusted Methods\FinalInAbstractClassRule to ignore Doctrine embeddables and entities ([#396]), by [@localheinz]
  • Adjusted Expressions\NoCompactRule to detect usages of compact() with incorrect case ([#889]), by [@localheinz]
  • Adjusted Methods\PrivateInFinalClassRule to use more appropriate message when detecting a protected method in an anonymous class ([#890]), by [@localheinz]
  • Adjusted Methods\PrivateInFinalClassRule to ignore protected methods from traits ([#891]), by [@localheinz]
  • Adjusted Methods\PrivateInFinalClassRule to ignore protected methods with phpunit/phpunit attributes requiring methods to be protected ([#863]), by [@cosmastech]
  • Adjusted Methods\PrivateInFinalClassRule to ignore protected methods with phpunit/phpunit annotations requiring methods to be protected ([#895]), by [@cosmastech]
`2.5.0`

For a full diff see [2.4.0...2.5.0][2.4.0...2.5.0].

Added

Changed

  • Removed dependency on nikic/php-parser ([#878]), by [@localheinz]
`2.4.0`

For a full diff see [2.3.0...2.4.0][2.3.0...2.4.0].

Added

`2.3.0`

For a full diff see [2.2.0...2.3.0][2.2.0...2.3.0].

Changed

  • Allowed installation on PHP 8.4 ([#862]), by [@localheinz]
`2.2.0`

For a full diff see [2.1.0...2.2.0][2.1.0...2.2.0].

Changed

  • Allowed installation of nikic/php-parser:^5.0.0 ([#735]), by [@localheinz]
`2.13.1`

For a full diff see [2.13.0...2.13.1][2.13.0...2.13.1].

Fixed

  • Adjusted Files\NoPhpstanIgnoreRule to traverse into all nodes ([#1011]), by [@localheinz]
`2.13.0`

For a full diff see [2.12.0...2.13.0][2.12.0...2.13.0].

Added

  • Added Files\NoPhpstanIgnoreRule, which reports an error when a [@phpstan-ignore](https://github.com/phpstan-ignore), [@phpstan-ignore-line](https://github.com/phpstan-ignore-line), or [@phpstan-ignore-next-line](https://github.com/phpstan-ignore-next-line) tag is used to suppress an error ([#1009]), by [@localheinz]

Changed

  • Required phpstan/phpstan:^2.1.35 ([#1010]), by [@localheinz]
`2.12.0`

For a full diff see [2.11.0...2.12.0][2.11.0...2.12.0].

Added

`2.11.0`

For a full diff see [2.10.5...2.11.0][2.10.5...2.11.0].

Changed

  • Allowed installation on PHP 8.5 ([#972]), by [@localheinz]
`2.10.5`

For a full diff see [2.10.4...2.10.5][2.10.4...2.10.5].

Fixed

  • Adjusted Methods\NoNamedArgumentRule to handle calls to constructors of variable class names ([#957]), by [@localheinz]
  • Adjusted Methods\NoNamedArgumentRule to describe known calls only ([#958]), by [@localheinz]
`2.10.4`

For a full diff see [2.10.3...2.10.4][2.10.3...2.10.4].

Fixed

  • Adjusted Methods\NoNamedArgumentRule to handle static calls on variable expressions ([#947]), by [@localheinz]
  • Adjusted Methods\NoNamedArgumentRule to handle calls on invokables ([#948]), by [@localheinz]
  • Adjusted Methods\NoNamedArgumentRule to handle calls on callables assigned to properties ([#949]), by [@localheinz]
  • Adjusted Methods\NoNamedArgumentRule to handle all other calls with generic error message ([#951]), by [@localheinz]
`2.10.3`

For a full diff see [2.10.2...2.10.3][2.10.2...2.10.3].

Fixed

  • Adjusted Methods\InvokeParentHookMethodRule to ignore comments ([#944]), by [@localheinz]
`2.10.2`

For a full diff see [2.10.1...2.10.2][2.10.1...2.10.2].

Fixed

  • Renamed error identifier for Methods\InvokeParentHookMethodRule ([#943]), by [@localheinz]
`2.10.1`

For a full diff see [2.10.0...2.10.1][2.10.0...2.10.1].

Fixed

  • Fixed schema for configuration of Methods\InvokeParentHookMethodRule ([#940]), by [@localheinz]
`2.10.0`

For a full diff see [2.9.0...2.10.0][2.9.0...2.10.0].

Added

  • Added Methods\InvokeParentHookMethodRule, which reports an error when a hook method that overrides a hook method in a parent class does not invoke the overridden hook method in the expected order ([#939]), by [@localheinz]
`2.1.0`

For a full diff see [2.0.0...2.1.0][2.0.0...2.1.0].

Changed

`2.0.0`

For a full diff see [1.0.0...2.0.0][1.0.0...2.0.0].

Added

  • Added methodsAllowedToUseContainerTypeDeclarations parameter to allow configuring a list of method names that are allowed to have container parameter type declarations ([#541), by [@localheinz]
  • Allowed disabling rules ([#542), by [@localheinz]
  • Added support for nullable union types ([#543), by [@localheinz]

Changed

Removed

  • Removed Expressions\NoEmptyRule ([#525]), by [@enumag]
`1.0.0`

For a full diff see [0.15.3...1.0.0][0.15.3...1.0.0].

Changed

  • Added support for phpstan/phpstan:^1.0.0 and dropped support for non-stable versions of phpstan/phpstan ([#381]), by [@rpkamp]

Fixed

  • Adjusted Classes\FinalRule to not report an error when a non-final class has a Doctrinbe\ORM\Mapping\Entity attribute ([#395]), by [@localheinz]
`0.9.1`

For a full diff see [0.9.0...0.9.1][0.9.0...0.9.1].

Changed

`0.9.0`

For a full diff see [0.8.1...0.9.0][0.8.1...0.9.0].

Changed

  • Adjusted Classes\FinalRule to ignore Doctrine entities when they are annotated ([#84]), by [@localheinz]
`0.8.1`

For a full diff see [0.8.0...0.8.1][0.8.0...0.8.1].

Fixed

  • Actually enable Expressions\NoIssetRule ([#83]), by [@localheinz]
`0.8.0`

For a full diff see [0.7.1...0.8.0][0.7.1...0.8.0].

Added

  • Added Expressions\NoIssetRule, which reports an error when the language construct isset() is used ([#81]), by [@localheinz]
`0.7.1`

For a full diff see [0.7.0...0.7.1][0.7.0...0.7.1].

Changed

  • Configured Classes\NoExtendsRule to allow a set of default classes to be extended ([#73]), by [@localheinz]
`0.7.0`

For a full diff see [0.6.0...0.7.0][0.6.0...0.7.0].

Added

  • Added Classes\NoExtendsRule, which reports an error when a class extends a class that is not allowed to be extended ([#68]), by [@localheinz]
`0.6.0`

For a full diff see [0.5.0...0.6.0][0.5.0...0.6.0].

Added

  • Allow installation with phpstan/phpstan:~0.11.0 ([#65]), by [@localheinz]
`0.5.0`

For a full diff see [0.4.0...0.5.0][0.4.0...0.5.0].

Added

  • Added Methods\NoConstructorParameterWithDefaultValueRule, which reports an error when a constructor of an anonymous class or a class has a parameter with a default value ([#45]), by [@localheinz]
  • Added parameters $allowAbstractClasses and $classesNotRequiredToBeAbstractOrFinal to allow configuration of ClassesFinalRule` ([#51]), by [@localheinz]

Removed

  • Removed Classes\AbstractOrFinalRule after merging behaviour into Classes\FinalRule ([#51]), by [@localheinz]
  • Removed default values from constructor of Classes\FinalRule ([#53]), by [@localheinz]
`0.4.0`

For a full diff see [0.3.0...0.4.0][0.3.0...0.4.0]

Changed

  • Removed double-quotes from error messages to be more consistent with error messages generated by phpstan/phstan ([#39]), by [@localheinz]
  • Modified wording and placement of method, function, and parameter names in error messages to be more consistent with error messages generated by phpstan/phstan ([#42]), by [@localheinz]
`0.3.0`

For a full diff see [0.2.0...0.3.0][0.2.0...0.3.0]

Added

  • Added Functions\NoNullableReturnTypeDeclarationRule, which reports an error when a function has a nullable return type declaration, and Methods\NoNullableReturnTypeDeclarationRule, which reports an error when a method declared in an anonymous class, a class, or an interface has a nullable return type declaration ([#16]), by [@localheinz]
  • Added Closures\NoParameterWithNullDefaultValueRule, which reports an error when a closure has a parameter with null as default value ([#26]), by [@localheinz]
  • Added Closures\NoNullableReturnTypeDeclarationRule, which reports an error when a closure has a nullable return type declaration ([#29]), by [@localheinz]
  • Added Functions\NoParameterWithNullDefaultValueRule, which reports an error when a function has a parameter with null as default value ([#31]), by [@localheinz]
  • Added Methods\NoParameterWithNullDefaultValueRule, which reports an error when a method declared in an anonymous class, a class, or an interface has a parameter with null as default value ([#32]), by [@localheinz]
  • Added Closures\NoParameterWithNullableTypeDeclarationRule, which reports an error when a closure has a parameter with a nullable type declaration ([#33]), by [@localheinz]
  • Added Functions\NoParameterWithNullableTypeDeclarationRule, which reports an error when a function has a parameter with a nullable type declaration ([#34]), by [@localheinz]
  • Added Methods\NoParameterWithNullableTypeDeclarationRule, which reports an error when a method declared in an anonymous class, a class, or an interface has a parameter with a nullable type declaration ([#35]), by [@localheinz]
  • Extracted rules.neon, so you can easily enable all rules by including it in your phpstan.neon ([#37]), by [@localheinz]
`0.2.0`

For a full diff see [0.1.0...0.2.0][0.1.0...0.2.0]

Added

  • Added Classes\FinalRule, which reports an error when a non-anonymous class is not final, ([#4]), by [@localheinz]

Changed

  • Added an $excludeClassNames argument to the constructors of Classes\AbstractOrFinalRule and Classes\FinalRule to allow whitelisting of classes, ([#11]), by [@localheinz]
`0.15.3`

For a full diff see [0.15.2...0.15.3][0.15.2...0.15.3].

Changed

  • Allow installation with PHP 8.0 ([#294]), by [@localheinz]
`0.15.2`

For a full diff see [0.15.1...0.15.2][0.15.1...0.15.2].

Changed

  • Dropped support for PHP 7.1 ([#259]), by [@localheinz]
`0.15.1`

For a full diff see [0.15.0...0.15.1][0.15.0...0.15.1].

Changed

  • Adjusted Methods\FinalInAbstractClass rule to allow non-final public constructors in abstract classes ([#248]), by [@Slamdunk]
`0.15.0`

For a full diff see [0.14.4...0.15.0][0.14.4...0.15.0].

Added

  • Added Classes\PHPUnit\Framework\TestCaseWithSuffixRule, which reports an error when a concrete class extending PHPUnit\Framework\TestCase does not have a Test suffix ([#225]), by [@localheinz]
`0.14.4`

For a full diff see [0.14.3...0.14.4][0.14.3...0.14.4].

Fixed

  • Ignored classes with [@ORM](https://github.com/ORM)\Mapping\Entity annotations in FinalRule ([#202]), by [@localheinz]
`0.14.3`

For a full diff see [0.14.2...0.14.3][0.14.2...0.14.3].

Fixed

  • Ignored first line in DeclareStrictTypesRule when it is a shebang ([#186]), by [@Great-Antique]
`0.14.2`

For a full diff see [0.14.1...0.14.2][0.14.1...0.14.2].

Fixed

  • Brought back support for PHP 7.1 ([#166]), by [@localheinz]
`0.14.1`

For a full diff see [0.14.0...0.14.1][0.14.0...0.14.1].

Fixed

  • Removed an inappropriate replace configuration from composer.json ([#161]), by [@localheinz]
`0.14.0`

For a full diff see [0.13.0...0.14.0][0.13.0...0.14.0].

Changed

  • Allowed installation of phpstan/phpstan:~0.12.0 ([#147]), by [@localheinz]

  • Renamed vendor namespace Localheinz to Ergebnis after move to [@ergebnis] ([#157]), by [@localheinz]

    Run

    composer remove localheinz/phpstan-rules
    

    and

    composer require ergebnis/phpstan-rules
    

    to update.

    Run

    find . -type f -exec sed -i '.bak' 's/Localheinz\\PHPStan/Ergebnis\\PHPStan/g' {} \;
    

    to replace occurrences of Localheinz\PHPStan with Ergebnis\PHPStan.

    Run

    find -type f -name '*.bak' -delete
    

    to delete backup files created in the previous step.

  • Moved parameters into ergebnis section to prevent conflicts with global parameters ([#158]), by [@localheinz]

    Where previously phpstan.neon looked like the following

    parameters:
        allowAbstractClasses: true
        classesAllowedToBeExtended: []
        classesNotRequiredToBeAbstractOrFinal: []
        interfacesImplementedByContainers:
            - Psr\Container\ContainerInterface
    

    these parameters now need to be moved into an ergebnis section:

     parameters:
    -    allowAbstractClasses: true
    -    classesAllowedToBeExtended: []
    -    classesNotRequiredToBeAbstractOrFinal: []
    -    interfacesImplementedByContainers:
    -        - Psr\Container\ContainerInterface
    +    ergebnis:
    +        allowAbstractClasses: true
    +        classesAllowedToBeExtended: []
    +        classesNotRequiredToBeAbstractOrFinal: []
    +        interfacesImplementedByContainers:
    +            - Psr\Container\ContainerInterface
    

Fixed

  • Dropped support for PHP 7.1 ([#141]), by [@localheinz]
`0.13.0`

For a full diff see [0.12.2...0.13.0][0.12.2...0.13.0].

Added

  • Added Methods\PrivateInFinalClassRule which reports an error when a method in a final class is protected when it could be private ([#126]), by [@localheinz]
`0.12.2`

For a full diff see [0.12.1...0.12.2][0.12.1...0.12.2].

Fixed

  • Started ignoring interfaces from analysis by Methods\FinalInAbstractClassRule to avoid inappropriate errors ([#132]), by [@localheinz]
`0.12.1`

For a full diff see [0.12.0...0.12.1][0.12.0...0.12.1].

Fixed

  • Started resolving class name in type declaration before attempting to analyze it in the Methods\NoParameterWithContainerTypeDeclarationRule to avoid errors where class self is not found ([#128]), by [@localheinz]
`0.12.0`

For a full diff see [0.11.0...0.12.0][0.11.0...0.12.0].

Added

  • Added Methods\NoParameterWithContainerTypeDeclarationRule, which reports an error when a method has a type declaration that corresponds to a known dependency injection container or service locator ([#122]), by [@localheinz]
  • Added Methods\FinalInAbstractClassRule, which reports an error when a concrete public or protected method in an abstract class is not final ([#123]), by [@localheinz]
`0.11.0`

For a full diff see [0.10.0...0.11.0][0.10.0...0.11.0].

Added

  • Added Files\DeclareStrictTypesRule, which reports an error when a PHP file does not have a declare(strict_types=1) declaration ([#79]
  • Added Expressions\NoEmptyRule, which reports an error when the language construct empty() is used ([#110]), by [@localheinz]
  • Added Expressions\NoEvalRule, which reports an error when the language construct eval() is used ([#112]), by [@localheinz]
  • Added Expressions\NoErrorSuppressionRule, which reports an error when @ is used to suppress errors ([#113]), by [@localheinz]
  • Added Expressions\NoCompactRule, which reports an error when the function compact() is used ([#116]), by [@localheinz]
  • Added Statements\NoSwitchRule, which reports an error when the statement switch() is used ([#117]), by [@localheinz]

Changed

  • Require at least nikic/php-parser:^4.2.3 ([#102]), by [@localheinz]
  • Require at least phpstan/phpstan:~0.11.15 ([#103]), by [@localheinz]
`0.10.0`

For a full diff see [0.9.1...0.10.0][0.9.1...0.10.0].

Changed

  • Require at least phpstan/phpstan:~0.11.7 ([#91]), by [@localheinz]

Fixed

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport