Phpstan은 코드에서 버그를 찾는 데 중점을 둡니다. 그러나 PHP에는 물건을 어떻게 작성할 수 있는지에 대한 여유가 많이 있습니다. 이 저장소는 매우 방어적인 프로그래밍에서 추가 안전을 원하는 사람들을 위해 느슨한 캐스팅없이 엄격하고 강력하게 입력 한 코드를 중심으로 한 추가 규칙이 포함되어 있습니다.
if , elseif , Ternary 운영자에 부울을 요구합니다 ! , && 및 || 의 양쪽에 .+ 및 숫자 및 숫자 피연산자의 숫자 또는 어레이가 - / * / / / ** / % 로 필요합니다.$var++ , $var-- , ++$var 및 --$var 에서 숫자 피연산자가 필요합니다.$strict 매개 변수가 포함되어 있어야 true .in_array (3 번째 매개 변수)array_search (3 번째 매개 변수)array_keys (세 번째 매개 변수; 두 번째 매개 변수 $search_value 제공되는 경우에만)base64_decode (2nd 매개 변수)while 조건과 루프 for 할당에 할당 된 변수는 루프 후에 사용할 수 없습니다.switch 조건의 유형 및 case 값이 일치해야합니다. PHP는 기본적으로 느슨하게 비교하여 예기치 않은 결과로 이어질 수 있습니다.empty() - 매우 느슨한 비교 (설명서 참조), 더 엄격한 것을 사용하는 것이 좋습니다.?: :) - 약한 비교를 암시합니다. Null Coalesce Operator ( ?? ) 또는 Ternary Operator를 엄격한 상태로 사용하는 것이 좋습니다.$$foo , $this->$method() 등).instanceof , 유형 확인 is_* 함수 및 엄격한 비교 === / !== . 이 점검은 checkAlwaysTrueInstanceof / checkAlwaysTrueCheckTypeFunctionCall / checkAlwaysTrueStrictComparison False로 설정하여 꺼질 수 있습니다.$ls = `ls -la` )$this 변수를 간접적으로 사용하는 대신 직접 $this 사용해야합니다.후속 릴리스에서 추가 규칙이 제공됩니다!
이 확장을 사용하려면 작곡가에 필요합니다.
composer require --dev phpstan/phpstan-strict-rules
Phpstan/Extension-Installer도 설치하면 모두 설정됩니다!
phpstan/extension-installer 사용하지 않으려면 프로젝트의 Phpstan 구성에 규칙을 포함시킵니다.
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-Rules는 Phpstan 자체에 존재하는 일부 구성 매개 변수의 기본값도 변경합니다. 이 매개 변수는 phpstan.org에 문서화되어 있습니다.
사용 가능한 모든 엄격한 규칙을 한 번에 사용하고 싶지 않다면 한두 가지만 사용하려면 가능합니다!
포함 된 rules.neon 에서 모든 규칙을 비활성화 할 수 있습니다.
parameters :
strictRules :
allRules : false그런 다음 구성 매개 변수로 개별 규칙을 다시 활성화 할 수 있습니다.
parameters :
strictRules :
allRules : false
booleansInConditions : true strictRules.allRules false 로 설정되어 있어도이 패키지의 일부는 여전히 유효합니다. PHPSTAN-STRICT-RULES는 PHPSTAN 자체에 존재하는 일부 구성 매개 변수의 기본값을 변경하기 때문입니다. 이 매개 변수는 phpstan.org에 문서화되어 있습니다.