Phpstan konzentriert sich darauf, Fehler in Ihrem Code zu finden. Aber in PHP gibt es viel Spielraum darin, wie Sachen geschrieben werden können. Dieses Repository enthält zusätzliche Regeln, die sich streng und stark typisierten Code ohne lockeres Casting für diejenigen, die zusätzliche Sicherheit in extrem defensiver Programmierung wünschen:
if , elseif , ternärer Operator, danach ! und auf beiden Seiten von && und || .+ und numerischen Operanden in - / * / / ** / % .$var++ , $var-- , ++$var und- --$var .$strict Parameter für eine bessere Sicherheitstypsicherheit. Er muss auf true festgelegt werden:in_array (3. Parameter)array_search (3. Parameter)array_keys (3. Parameter; nur wenn der 2. Parameter $search_value bereitgestellt wird)base64_decode (2. Parameter)while der Schleifenbedingung und for die Schleifenanfangszuweisung zugewiesen sind, können nach der Schleife nicht verwendet werden.switch -Zustand und case müssen übereinstimmen. PHP vergleicht sie standardmäßig lose und dies kann zu unerwarteten Ergebnissen führen.empty() - Es ist ein sehr lockerer Vergleich (siehe Handbuch), es wird empfohlen, strengere zu verwenden.?: :) - impliziert einen schwachen Vergleich. Es wird empfohlen, den Null -Koales -Operator ( ?? ) oder den ternären Bediener mit strenger Bedingung zu verwenden.$$foo , $this->$method() usw.)instanceof , Typ-Überprüfung is_* Funktionen und strenge Vergleiche === / !== . Diese Überprüfungen können ausgeschaltet werden, indem checkAlwaysTrueInstanceof / checkAlwaysTrueCheckTypeFunctionCall / Checkalways -for checkAlwaysTrueStrictComparison zu False festgelegt wird.$ls = `ls -la` )$this direkt verwenden, anstatt $this variable indirekt zu verwendenWeitere Regeln kommen in nachfolgenden Veröffentlichungen!
Um diese Erweiterung zu verwenden, benötigen Sie sie in Komponist:
composer require --dev phpstan/phpstan-strict-rules
Wenn Sie auch Phpstan/Extension-Installer installieren, sind Sie alle festgelegt!
Wenn Sie phpstan/extension-installer nicht verwenden möchten, geben Sie Regeln ein. Neon in der Phpstan-Konfiguration Ihres Projekts:
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
Sie können Regeln mithilfe von Konfigurationsparametern deaktivieren:
parameters :
strictRules :
disallowedLooseComparison : false
booleansInConditions : false
uselessCast : false
requireParentConstructorCall : false
disallowedBacktick : false
disallowedEmpty : false
disallowedImplicitArrayCreation : false
disallowedShortTernary : false
overwriteVariablesWithLoop : false
closureUsesThis : false
matchingInheritedMethodNames : false
numericOperandsInArithmeticOperators : false
strictFunctionCalls : false
dynamicCallOnStaticMethod : false
switchConditionsMatchingType : false
noVariableVariables : false
strictArrayFilter : false
illegalConstructorMethodCall : falseNeben der Einführung neuer benutzerdefinierter Regeln ändern Phpstan-Strict-Rules auch die Standardwerte einiger Konfigurationsparameter, die in Phpstan selbst vorhanden sind. Diese Parameter sind auf phpstan.org dokumentiert.
Wenn Sie nicht alle verfügbaren strengen Regeln gleichzeitig verwenden möchten, sondern nur ein oder zwei, können Sie!
Sie können alle Regeln aus den enthaltenen rules.neon deaktivieren. Neon mit:
parameters :
strictRules :
allRules : falseAnschließend können Sie einzelne Regeln mit Konfigurationsparametern erneut untersucht:
parameters :
strictRules :
allRules : false
booleansInConditions : true Selbst bei strictRules.allRules false Dies liegt daran, dass Phpstan-Strict-Rules auch die Standardwerte einiger Konfigurationsparameter ändern, die in Phpstan selbst vorhanden sind. Diese Parameter sind auf phpstan.org dokumentiert.