PHP와 프로그래밍에 대한 충분한 경험이 없으므로 제 상황에 가장 적합한 결정이 무엇인지 알고 싶습니다. 내가 키 $type
배열 $ascii_array
을 위해 존재하는지 확인하려면PHP : 아래의 경우 예외 처리 방법
public static function isAscii($string, $type, $length = -1)
{
if (!is_string($string))
throw new InternalException(ExceptionMessage::invalidFunctionParameterType(__CLASS__, __METHOD__));
if ($length !== -1 && !Str::isValidLength($string, $length))
return FALSE;
$ascii_array = Constants::asciiRegex();
if (!preg_match($ascii_array[$type], $string))
return FALSE;
return TRUE;
}
: 여기 내 코드 샘플입니다. 그렇게하는 가장 좋은 방법은 무엇입니까?
- 간단한 :
나는이 결정을 제공 할 수 있습니다.
array_key_exists()
기능으로 키 존재를 수동으로 확인하십시오. key가 존재하지 않으면 예외를 throw합니다. 그러나 나는 좋은 생각이 아니며이 조건을 검사하는 것은 중복이다. 왜냐하면 PHP 컴파일러는 아무 것도 쓰지 않으면 경고를 생성하기 때문에 (Notice : Undefined index :) 나는 이것을 어떻게 든 사용하고 싶다.OutOfBoundsException
과OutOfRangeException
과 같은 미리 정의 된 예외가있는 것으로 밝혀졌습니다. Java 에서처럼 쉽게 사용할 수 있지만 PHP는 이러한 예외를 발생시키지 않으며 경고 및 오류 만 표시합니다. set_error_handler()
을 사용하면 오류 및 경고를 예외로 '변환'할 수 있습니다. 그러나 또 다른 문제가 있습니다. 가능한 모든 오류를 어떻게 처리 할 수 있습니까? PHP 오류 및 경고의 전체 목록을 찾으려고했지만 it doesn't exist. 그래서이 문제를 해결하는 방법을 모릅니다. 제발 도와주세요. 미리 감사드립니다. 제 영어 실력이 떨어지는 경우에도 제 질문을 이해하길 바랍니다.
P. 이것은 여러 유형의 ASCII 문자열에 대한 정규 표현식을 사용하는 배열입니다.
만약 배열에 배열되어 있는지 확인하고 싶다면'in_array'를 사용하십시오. - 여기서 예외로 무엇을하려고합니까? 즉'false '를 반환하는 것과 예외를 던지는 것의 차이점은 무엇입니까? 또는 말하십시오 : 원하는 결과는 무엇입니까? 앱이 다르게 동작해야합니까? – dognose
문자열이 ascii인지 여부를 간단히 알리려고하면 함수가 복잡해지기 쉽습니다.그것이 당신이하는 일이 아니라면 다른 함수 이름을 선택해야합니다. – crush
나는 동의한다, 당신은 약간 overengineering 여기에서이다. 애플리케이션 디자인의이 단계에서 이러한 종류의 복잡성은 앞으로 도움이되지 않습니다. –