Wybacz mój pseudo-php / kod.
Myślę, że to naprawdę zależy od zamierzonego wykorzystania wyniku.
Jeśli zamierzasz edytować / zmodyfikować wartość zwracaną i zapisać ją, zwróć pusty obiekt. W ten sposób możesz użyć tej samej funkcji do zapełnienia danych nowym lub istniejącym obiektem.
Powiedzmy, że mam funkcję, która pobiera klucz podstawowy i tablicę danych, wypełnia wiersz danymi, a następnie zapisuje wynikowy rekord w db. Ponieważ mam zamiar zapełnić obiekt moimi danymi w jakikolwiek sposób, ogromną zaletą może być odzyskanie pustego obiektu z gettera. W ten sposób mogę wykonać identyczne operacje w obu przypadkach. Korzystasz z wyniku funkcji gettera bez względu na wszystko.
Przykład:
function saveTheRow($prim_key, $data) {
$row = getRowByPrimKey($prim_key);
// Populate the data here
$row->save();
}
Tutaj widzimy, że ta sama seria operacji manipuluje wszystkimi rekordami tego typu.
Jeśli jednak ostatecznym celem wartości zwracanej jest odczytanie i zrobienie czegoś z danymi, zwrócę wartość null. W ten sposób mogę bardzo szybko ustalić, czy dane nie zostały zwrócone i wyświetlić użytkownikowi odpowiedni komunikat.
Zazwyczaj wychwytuję wyjątki w mojej funkcji, która pobiera dane (dzięki czemu mogę rejestrować komunikaty o błędach itp.), A następnie zwracam wartość NULL bezpośrednio od początku. Zasadniczo nie ma znaczenia dla użytkownika końcowego, na czym polega problem, dlatego uważam, że najlepiej jest zawrzeć moje logowanie / przetwarzanie błędów bezpośrednio w funkcji, która pobiera dane. Jeśli utrzymujesz wspólną bazę kodów w dowolnej dużej firmie, jest to szczególnie korzystne, ponieważ możesz wymusić prawidłowe rejestrowanie błędów / obsługę nawet najbardziej leniwego programisty.
Przykład:
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;
}
To moja ogólna zasada. Do tej pory działało dobrze.
if (!DataExists)
.