원래 문제:
PHP 애플리케이션에서 제어되지 않은 변수를 사용하면 수많은 문제가 발생할 수 있습니다. E_NOTICE 오류 수준을 켠 상태에서 실행할 때 "정의되지 않음" 및 "오프셋" 오류가 발생합니다. isset(),empty() 및 array_key_exists() 함수를 과도하게 사용하여 이러한 오류를 해결하면 코드가 부풀어 오르고 가독성이 저하될 수 있습니다.
권장 접근 방식:
대신 변수 검사에만 의존하는 경우 변수 검사의 필요성을 최소화하도록 코드를 재구성하는 것이 좋습니다. 방법은 다음과 같습니다.
초기화 시 변수에 기본값을 할당합니다. 이렇게 하면 변수가 외부에서 할당되었는지 여부에 관계없이 항상 정의된 값을 갖기 때문에 isset() 검사가 필요하지 않습니다.
예:
$foo = null; // Null $bar = $baz = 'default value'; // Default string
Null 값을 방지하려면 함수 인수의 기본값을 지정하세요. 이를 통해 함수는 isset() 검사 없이 예측 가능한 입력으로 작업할 수 있습니다.
예:
function foo($bar = null) { ... }
array_merge()를 사용하여 기본값을 수신 데이터 소스와 결합합니다. 이는 알려진 기본값으로 배열을 초기화하므로 isset() 검사가 필요하지 않습니다.
예:
$defaults = ['foo' => false, 'bar' => true, 'baz' => 'default value']; $values = array_merge($defaults, $incoming_array);
이 함수는 키의 존재 여부가 중요한 예외적인 경우에만 사용해야 합니다. 일반적으로 변수나 배열을 초기화하면 array_key_exists() 검사가 필요하지 않습니다.
예:
$array = ['key' => null]; if (array_key_exists('key', $array)) { ... }
템플릿에서 isset() 및empty() 검사를 아껴서 사용하세요. 변수가 설정되지 않았거나 비어 있으면 기본값이나 적절한 오류 처리 메시지로 바꿔야 합니다.
예:
<?php if (isset($foo)): ?> <!-- Output content --> <?php else: ?> <p>Foo is not set.</p> <?php endif; ?>
다음을 따르세요. 지침에 따라 E_NOTICE 호환성을 유지하면서 isset(),empty() 및 array_key_exists() 검사에 대한 의존도를 크게 줄일 수 있습니다. 이러한 접근 방식을 통해 코드가 더욱 깔끔하고 읽기 쉬워지며 코드의 신뢰성과 유지 관리성이 향상됩니다.
위 내용은 PHP 코드에서 다루기 힘든 변수 검사를 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!