Пробачте мій псевдо-php / код.
Я думаю, це дійсно залежить від наміченого використання результату.
Якщо ви маєте намір відредагувати / змінити повернене значення та зберегти його, поверніть порожній об'єкт. Таким чином, ви можете використовувати ту саму функцію для заповнення даних на новому або існуючому об'єкті.
Скажімо, у мене є функція, яка займає первинний ключ і масив даних, заповнює рядок даними, а потім зберігає отриманий запис у db. Оскільки я маю намір будь-яким чином заповнити об’єкт своїми даними, це може бути величезною перевагою повернути порожній об’єкт від геттера. Таким чином, я можу виконувати однакові операції в будь-якому випадку. Ви використовуєте результат функції getter незалежно від того.
Приклад:
function saveTheRow($prim_key, $data) {
$row = getRowByPrimKey($prim_key);
// Populate the data here
$row->save();
}
Тут ми можемо побачити, що однаковий ряд операцій маніпулює всіма записами такого типу.
Однак, якщо кінцевою метою поверненого значення є прочитати та зробити щось із даними, я б повернув 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)
.