私の疑似php /コードを許してください。
結果の使用目的に依存すると思います。
戻り値を編集/変更して保存する場合は、空のオブジェクトを返します。このように、同じ関数を使用して、新規または既存のオブジェクトにデータを入力できます。
主キーとデータの配列を取り、行にデータを入力し、結果のレコードをデータベースに保存する関数があるとします。いずれかの方法でオブジェクトにデータを入力するつもりなので、ゲッターから空のオブジェクトを取得することは非常に有利です。そうすれば、どちらの場合でも同じ操作を実行できます。ゲッター関数の結果は何があっても使用します。
例:
function saveTheRow($prim_key, $data) {
$row = getRowByPrimKey($prim_key);
// Populate the data here
$row->save();
}
ここで、同じ一連の操作がこのタイプのすべてのレコードを操作することがわかります。
ただし、戻り値の最終的な目的がデータを読み取って何かを実行することである場合は、nullを返します。このようにして、データが返されなかったかどうかを非常に迅速に判断し、適切なメッセージをユーザーに表示できます。
通常、データを取得する関数で例外をキャッチし(エラーメッセージなどをログに記録できるようにします)、キャッチから直接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)
。