Phpstanは、コードにバグを見つけることに焦点を当てています。しかし、PHPでは、物事を書く方法について多くの余裕があります。このリポジトリには、非常に防御的なプログラミングで追加の安全性を必要とする人のためのゆるいキャストなしで、厳密かつ強くタイプされたコードを中心に展開する追加のルールが含まれています。
if 、 elseif 、三元オペレーターにブーチャンを必要とします! 、および&&および||の両側。- / * / / ** / %に+および数値オペランドに数値オペランドまたはアレイが必要です。$var++ 、 $var-- 、 ++$var 、 --$varの数値オペランドが必要です。trueのために$strictパラメーターが含まれています。in_array (3番目のパラメーター)array_search (3番目のパラメーター)array_keys (3番目のパラメーター; 2番目のパラメーター$search_valueが提供されている場合のみ)base64_decode (2番目のパラメーター)while loop条件およびループfor初期割り当てに割り当てられた変数は、ループ後に使用することはできません。switch状態とcase値のタイプは一致する必要があります。 PHPはデフォルトでそれらをゆるく比較するため、予期しない結果につながる可能性があります。empty() - それは非常にゆるい比較です(マニュアルを参照)。もっと厳格なものを使用することをお勧めします。?: :) - 弱い比較を意味し、Null Coalesceオペレーター( ?? )または厳密な状態の3成分演算子を使用することをお勧めします。$$foo 、 $this->$method()など)instanceof 、タイプチェックis_*関数と厳密な比較=== / !== 。これらのチェックは、 checkAlwaysTrueInstanceof of / checkAlwaysTrueCheckTypeFunctionCall / checkAlwaysTrueStrictComparisonをFalseに設定することでオフにできます。$ls = `ls -la` )$this変数を間接的に使用する代わりに、 $this直接使用する必要がありますその後のリリースでは、追加のルールが来ています!
この拡張機能を使用するには、作曲家でそれを必要とします。
composer require --dev phpstan/phpstan-strict-rules
PHPSTAN/Extension-Installerもインストールする場合は、すべて設定されています。
phpstan/extension-installer使用したくない場合は、プロジェクトのphpstan configにルールを含めます。
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
構成パラメーターを使用してルールを無効にすることができます。
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 : false新しいカスタムルールを導入することは別として、PHPSTAN-STRICT-RULEは、PHPSTAN自体に存在する一部の構成パラメーターのデフォルト値も変更します。これらのパラメーターは、phpstan.orgに文書化されています。
利用可能なすべての厳格なルールを一度に使用したくない場合は、1つまたは2つだけを使用したくない場合は、できます!
付属のrules.neonからすべてのルールを無効にすることができます。
parameters :
strictRules :
allRules : false次に、構成パラメーターを使用して個々のルールを再度有効にすることができます。
parameters :
strictRules :
allRules : false
booleansInConditions : true strictRules.allRulesがfalseに設定されていても、このパッケージの一部は依然として有効です。これは、PHPSTAN-STRICT-RULEがPHPSTAN自体に存在する一部の構成パラメーターのデフォルト値を変更するためです。これらのパラメーターは、phpstan.orgに文書化されています。