2.18. 空对象模式(Null Object)
正常操作
$user = User::find(1);
if( $user) // 跟if( $user == null) 一个效果的
$user->save();
.....后续代码
需要 if
判断是否为 null
,才执行 save()
能不能省略 if
或者 自定义其他操作 ?
(大部分时候还得乖乖用 if
)
代码实现
<?php
class User{
public static function first()
{
$res = false;
if( $res) //查询到数据就返回
return $res;
return new NullObject(); //查询不到返回NullObject类
}
}
class NullObject{
public function __call($name, $arguments)
{
// 什么操作都不做
}
}
$user = User::first();
$user->save();