Pardonnez mon pseudo-php / code.
Je pense que cela dépend vraiment de l'utilisation prévue du résultat.
Si vous souhaitez éditer / modifier la valeur de retour et l'enregistrer, renvoyez un objet vide. De cette façon, vous pouvez utiliser la même fonction pour remplir des données sur un objet nouveau ou existant.
Disons que j'ai une fonction qui prend une clé primaire et un tableau de données, remplit la ligne de données, puis enregistre l'enregistrement résultant dans la base de données. Étant donné que j'ai l'intention de remplir l'objet avec mes données de toute façon, il peut être très avantageux de récupérer un objet vide du getter. De cette façon, je peux effectuer des opérations identiques dans les deux cas. Vous utilisez le résultat de la fonction getter quoi qu'il arrive.
Exemple:
function saveTheRow($prim_key, $data) {
$row = getRowByPrimKey($prim_key);
// Populate the data here
$row->save();
}
Ici, nous pouvons voir que la même série d'opérations manipule tous les enregistrements de ce type.
Cependant, si l'intention ultime de la valeur de retour est de lire et de faire quelque chose avec les données, je retournerais null. De cette façon, je peux déterminer très rapidement si aucune donnée n'a été retournée et afficher le message approprié à l'utilisateur.
Habituellement, j'attraperai des exceptions dans ma fonction qui récupère les données (afin que je puisse enregistrer les messages d'erreur, etc ...) puis retournerai null directement à partir de la capture. Peu importe l'utilisateur final, quel est le problème, je trouve donc préférable d'encapsuler mon enregistrement / traitement des erreurs directement dans la fonction qui obtient les données. Si vous maintenez une base de code partagée dans une grande entreprise, cela est particulièrement avantageux car vous pouvez forcer la journalisation / la gestion des erreurs, même sur le programmeur le plus paresseux.
Exemple:
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;
}
Voilà ma règle générale. Cela a bien fonctionné jusqu'à présent.
if (!DataExists)
.