Vergib mir meinen Pseudo-PHP / Code.
Ich denke, es hängt wirklich von der beabsichtigten Verwendung des Ergebnisses ab.
Wenn Sie den Rückgabewert bearbeiten / ändern und speichern möchten, geben Sie ein leeres Objekt zurück. Auf diese Weise können Sie dieselbe Funktion verwenden, um Daten in ein neues oder vorhandenes Objekt einzufügen.
Angenommen, ich habe eine Funktion, die einen Primärschlüssel und ein Datenarray verwendet, die Zeile mit Daten füllt und dann den resultierenden Datensatz in der Datenbank speichert. Da ich beabsichtige, das Objekt so oder so mit meinen Daten zu füllen, kann es ein großer Vorteil sein, ein leeres Objekt vom Getter zurückzubekommen. Auf diese Weise kann ich in beiden Fällen identische Operationen ausführen. Sie verwenden das Ergebnis der Getter-Funktion, egal was passiert.
Beispiel:
function saveTheRow($prim_key, $data) {
$row = getRowByPrimKey($prim_key);
// Populate the data here
$row->save();
}
Hier können wir sehen, dass dieselbe Reihe von Operationen alle Datensätze dieses Typs manipuliert.
Wenn die endgültige Absicht des Rückgabewerts jedoch darin besteht, etwas mit den Daten zu lesen und zu tun, würde ich null zurückgeben. Auf diese Weise kann ich sehr schnell feststellen, ob keine Daten zurückgegeben wurden, und dem Benutzer die entsprechende Nachricht anzeigen.
Normalerweise fange ich Ausnahmen in meiner Funktion ab, die die Daten abrufen (damit ich Fehlermeldungen usw. protokollieren kann) und gebe dann direkt vom Fang null zurück. Für den Endbenutzer spielt es im Allgemeinen keine Rolle, wo das Problem liegt. Daher finde ich es am besten, meine Fehlerprotokollierung / -verarbeitung direkt in der Funktion zu kapseln, die die Daten abruft. Wenn Sie in einem großen Unternehmen eine gemeinsam genutzte Codebasis verwalten, ist dies besonders vorteilhaft, da Sie selbst dem faulsten Programmierer die ordnungsgemäße Fehlerprotokollierung / -behandlung aufzwingen können.
Beispiel:
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;
}
Das ist meine allgemeine Regel. Bisher hat es gut funktioniert.
if (!DataExists)
.