O Phpstan se concentra em encontrar bugs em seu código. Mas no PHP, há muita margem de manobra em como as coisas podem ser escritas. Este repositório contém regras adicionais que giram em torno de código tigido estritamente e fortemente sem elenco solto para quem deseja segurança adicional em programação extremamente defensiva:
if , elseif , operador ternário, depois ! , e nos dois lados de && e || .+ e numéricos em - / * / / / ** / % .$var++ , $var-- , ++$var --$var .$strict para melhor segurança do tipo, ele deve ser definido como true :in_array (3º parâmetro)array_search (3º parâmetro)array_keys (3º parâmetro; somente se o 2º parâmetro $search_value for fornecido)base64_decode (2º parâmetro)while condição de loop e for a atribuição inicial de loop não podem ser usadas após o loop.switch e valor case deve corresponder. O PHP os compara vagamente por padrão e isso pode levar a resultados inesperados.empty() - É uma comparação muito frouxa (consulte Manual), é recomendável usar mais rigoroso.?: :) - implica comparação fraca, é recomendável usar o operador nulo de coalesce ( ?? ) ou operador ternário com condição estrita.$$foo , $this->$method() etc.)instanceof , Funções is_* de verificação de tipo e comparações rigorosas === / !== . Essas verificações podem ser desligadas definindo checkAlwaysTrueInstanceof / checkAlwaysTrueCheckTypeFunctionCall / checkAlwaysTrueStrictComparison para false.$ls = `ls -la` )$this diretamente em vez de usar $this variável indiretamenteRegras adicionais estão chegando em lançamentos subsequentes!
Para usar esta extensão, requer no compositor:
composer require --dev phpstan/phpstan-strict-rules
Se você também instalar o Phpstan/Extension-Installer, está tudo pronto!
Se você não quiser usar phpstan/extension-installer , inclua regras.neon na configuração do Phpstan do seu projeto:
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
Você pode desativar as regras usando parâmetros de configuração:
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 : falseAlém de introduzir novas regras personalizadas, o Phpstan-Strict-Rules também altera os valores padrão de alguns parâmetros de configuração presentes no próprio Phpstan. Esses parâmetros estão documentados em phpstan.org.
Se você não quiser começar a usar todas as regras estritas disponíveis de uma só vez, mas apenas uma ou duas, você pode!
Você pode desativar todas as regras das rules.neon incluídas.
parameters :
strictRules :
allRules : falseEm seguida, você pode reativar regras individuais com parâmetros de configuração:
parameters :
strictRules :
allRules : false
booleansInConditions : true Mesmo com strictRules.allRules definidos como false , parte deste pacote ainda está em vigor. Isso ocorre porque o Phpstan-Strict-Rules também altera os valores padrão de alguns parâmetros de configuração presentes no próprio Phpstan. Esses parâmetros estão documentados em phpstan.org.