Weave 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

localheinz/phpstan-rules

A Composer package of PHPStan rules from ergebnis that enforce stricter coding standards, covering areas like final classes, named arguments, and class extension. Install via Composer and include rules.neon, or let phpstan/extension-installer handle it automatically. Best layered on top of PHPStan's...

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.
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo
bernskioldmedia/laravel-harvest
bernskiold/laravel-data-scrubber
bernskiold/laravel-currency-converter
bernskiold/laravel-campaign-monitor
bernskioldmedia/laravel-autotranslate
siberfx/telegram-bot
roy-sandip/laravel-view-extended
gregsphotography/site-builder-core
roy-sandip/laravel-view
anodyne/blade-fluentui-icons
webx-ui/module-catalog-collections