Phpstan se enfoca en encontrar errores en su código. Pero en PHP hay mucho margen sobre cómo se pueden escribir cosas. Este repositorio contiene reglas adicionales que giran en torno a un código estrictamente y fuertemente escrito sin un casting suelto para aquellos que desean seguridad adicional en una programación extremadamente defensiva:
if , elseif , operador ternario, después ! , y en ambos lados de && y || .+ y numéricos en - / * / / / ** / % .$var++ , $var-- , ++$var --$var .$strict para una mejor seguridad de tipo, debe establecerse en true :in_array (3er parámetro)array_search (3er parámetro)array_keys (3er parámetro; solo si se proporciona el segundo parámetro $search_value )base64_decode (2º parámetro)while y for la asignación inicial del bucle no se pueden usar después del bucle.switch y el valor case deben coincidir. PHP los compara libremente de forma predeterminada y eso puede conducir a resultados inesperados.empty() - Es una comparación muy floja (ver Manual), se recomienda usar una más estricta.?: :) - Implica una comparación débil, se recomienda utilizar operador nulo de Coalesce ( ?? ) o operador ternario con una condición estricta.$$foo , $this->$method() etc.)instanceof , comprobación de tipo is_* y comparaciones estrictas === / !== . Estas verificaciones se pueden desactivar configurando checkAlwaysTrueInstanceof / checkAlwaysTrueCheckTypeFunctionCall / checkAlwaysTrueStrictComparison en falso.$ls = `ls -la` )$this directamente en lugar de usar $this variable indirectamente¡Se producen reglas adicionales en lanzamientos posteriores!
Para usar esta extensión, requiere en compositor:
composer require --dev phpstan/phpstan-strict-rules
Si también instala PHPSTAN/Extension-Installer, ¡está listo!
Si no desea utilizar phpstan/extension-installer , incluya reglas.
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
Puede deshabilitar las reglas utilizando los parámetros de configuración:
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 : falseAdemás de introducir nuevas reglas personalizadas, las reglas PHPSTAN-Strict también cambian los valores predeterminados de algunos parámetros de configuración que están presentes en PHPSTAN. Estos parámetros se documentan en phpstan.org.
Si no desea comenzar a usar todas las reglas estrictas disponibles a la vez, pero solo una o dos, ¡puede!
Puede deshabilitar todas las reglas de las rules.neon incluidas.
parameters :
strictRules :
allRules : falseLuego puede volver a habilitar las reglas individuales con los parámetros de configuración:
parameters :
strictRules :
allRules : false
booleansInConditions : true Incluso con strictRules.allRules establecidos en false , parte de este paquete todavía está vigente. Esto se debe a que las reglas PHPSTAN-strict también cambian los valores predeterminados de algunos parámetros de configuración que están presentes en PHPSTAN. Estos parámetros se documentan en phpstan.org.