原谅我的伪PHP /代码。
我认为这实际上取决于结果的预期用途。
如果打算编辑/修改返回值并保存它,则返回一个空对象。这样,您可以使用相同的函数在新对象或现有对象上填充数据。
假设我有一个函数,该函数需要一个主键和一个数据数组,用数据填充行,然后将结果记录保存到db。由于我打算以任何一种方式用我的数据填充对象,因此从吸气剂中回收空对象可能是一个巨大的优势。这样,无论哪种情况,我都可以执行相同的操作。无论如何,都可以使用getter函数的结果。
例:
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)
。