Прости мой псевдо-php / код.
Я думаю, что это действительно зависит от предполагаемого использования результата.
Если вы намереваетесь отредактировать / изменить возвращаемое значение и сохранить его, верните пустой объект. Таким образом, вы можете использовать ту же функцию для заполнения данных о новом или существующем объекте.
Скажем, у меня есть функция, которая берет первичный ключ и массив данных, заполняет строку данными, а затем сохраняет полученную запись в БД. Так как я собираюсь заполнить объект моими данными в любом случае, может быть огромным преимуществом получить пустой объект от получателя. Таким образом, я могу выполнять идентичные операции в любом случае. Вы используете результат функции получения независимо от того, что.
Пример:
function saveTheRow($prim_key, $data) {
$row = getRowByPrimKey($prim_key);
// Populate the data here
$row->save();
}
Здесь мы видим, что одна и та же серия операций управляет всеми записями этого типа.
Однако, если конечная цель возвращаемого значения - прочитать и что-то сделать с данными, то я бы возвратил ноль. Таким образом, я могу очень быстро определить, не были ли возвращены данные, и отобразить соответствующее сообщение для пользователя.
Обычно я отлавливаю исключения в своей функции, которая извлекает данные (чтобы я мог регистрировать сообщения об ошибках и т. Д.), А затем возвращает ноль прямо из перехвата. Как правило, для конечного пользователя не имеет значения, в чем заключается проблема, поэтому я считаю, что лучше всего инкапсулировать мою регистрацию / обработку ошибок непосредственно в функции, которая получает данные. Если вы поддерживаете общую кодовую базу в любой крупной компании, это особенно полезно, потому что вы можете принудительно регистрировать и обрабатывать ошибки даже для самого ленивого программиста.
Пример:
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)
.