此文章发布于68
个月前,部分信息可能已经过时
,请自行斟酌确认。
研究ThinkPHP
源码时发现删除记录的 destory 方法中的判断有点绕,学习了下发现还是因为自己读书太少。
先看下面的逻辑:
/**
* 删除记录
* @access public
* @param mixed $data 主键列表 支持闭包查询条件
* @return bool
*/
public static function destroy($data)
{
if (empty($data) && 0 !== $data) {
return false;
}
//删除逻辑...
}
原来以为代码应该实现的逻辑是:如果参数 $data 是空,或者是 0,则返回不处理
,后来才发现应该是 0 的时候也会执行后面的逻辑。
因为:PHP 中 empty(0) 是返回的 1,也就是说 0 在 PHP 中也被当成空,所以上面代码中的判断是没问题的。
如果 $data 不是 0 的情况是空,则返回 false 不执行删除操作。