내 의사 PHP / 코드를 용서하십시오.
나는 그것이 의도 한 결과의 사용에 달려 있다고 생각합니다.
리턴 값을 편집 / 수정하고 저장하려면 빈 오브젝트를 리턴하십시오. 이렇게하면 동일한 기능을 사용하여 새 객체 나 기존 객체의 데이터를 채울 수 있습니다.
기본 키와 데이터 배열을 가져 와서 행을 데이터로 채우고 결과 레코드를 db에 저장하는 함수가 있다고 가정 해보십시오. 객체를 어느 쪽이든 데이터로 채우려 고하므로 게터에서 빈 객체를 다시 가져 오는 것이 큰 이점이 될 수 있습니다. 그렇게하면 어느 경우 든 동일한 작업을 수행 할 수 있습니다. 무엇이든 getter 함수의 결과를 사용합니다.
예:
function saveTheRow($prim_key, $data) {
$row = getRowByPrimKey($prim_key);
// Populate the data here
$row->save();
}
여기서 동일한 일련의 작업이이 유형의 모든 레코드를 조작 함을 알 수 있습니다.
그러나 반환 값의 궁극적 인 의도가 데이터로 무언가를 읽고 수행하는 경우 null을 반환합니다. 이렇게하면 반환 된 데이터가 없는지 신속하게 확인할 수 있으며 사용자에게 적절한 메시지를 표시 할 수 있습니다.
일반적으로 함수에서 데이터를 검색하는 예외를 잡아서 (오류 메시지 등을 기록 할 수 있습니다 ...) 캐치에서 null을 직접 반환합니다. 일반적으로 최종 사용자에게는 문제가 무엇인지 중요하지 않으므로 데이터를 가져 오는 함수에 오류 로깅 / 처리를 직접 캡슐화하는 것이 가장 좋습니다. 대기업에서 공유 코드베이스를 유지 관리하는 경우 게으른 프로그래머라도 적절한 오류 로깅 / 처리를 강제 할 수 있기 때문에 특히 유용합니다.
예:
function displayData($row_id) {
// Logging of the error would happen in this function
$row = getRow($row_id);
if($row === null) {
// Handle the error here
}
// Do stuff here with data
}
function getRow($row_id) {
$row = null;
try{
if(!$db->connected()) {
throw excpetion("Couldn't Connect");
}
$result = $db->query($some_query_using_row_id);
if(count($result) == 0 ) {
throw new exception("Couldn't find a record!");
}
$row = $db->nextRow();
} catch (db_exception) {
//Log db conn error, alert admin, etc...
return null; // This way I know that null means an error occurred
}
return $row;
}
이것이 나의 일반적인 규칙입니다. 지금까지 잘 작동했습니다.
if (!DataExists)
.