Php 有可能在is_null中得到类返回true吗?
我正在为懒散地加载SQL查询构建某种代理模式类 代理模式使用Php 有可能在is_null中得到类返回true吗?,php,proxy,isnull,Php,Proxy,Isnull,我正在为懒散地加载SQL查询构建某种代理模式类 代理模式使用\uuu call、\uu get和\uu set来中继对其对象的调用,但如果SQL没有返回任何行,则有时没有对象 我的问题是,如果我在代理类上执行is\u null(),那么是否可以使类返回true?我在想是否有任何SPL接口可以像Countable那样实现,从而使类在count()中工作 有什么建议吗?遗憾的是,这是不可能的,我担心传递给is_null的对象返回true。一些替代方案可能是: 使用NullObjects,最近可以在s
\uuu call
、\uu get
和\uu set
来中继对其对象的调用,但如果SQL没有返回任何行,则有时没有对象
我的问题是,如果我在代理类上执行is\u null()
,那么是否可以使类返回true
?我在想是否有任何SPL接口可以像Countable那样实现,从而使类在count()
中工作
有什么建议吗?遗憾的是,这是不可能的,我担心传递给is_null的对象返回true。一些替代方案可能是:
我不知道这是否有任何帮助,但通过利用_u-toString方法,您可能会实现您想要的,但请注意,这根本不是干净的代码或最佳实践,Rob建议的解决方案实际上更好 您必须使用PHP5.2或更高版本,并利用PHP类模型中的类型转换和_u-toString魔术方法
class Dummy
{
private $value;
public function __construct($val)
{
$this->value = $val;
}
public function __toString()
{
return $this->value;
}
}
$dummy = new Dummy('1');
if((string)$dummy) {
echo "__toString evaluated as true".PHP_EOL;
} else {
echo "__toString evaluated as false".PHP_EOL;
}
$dummy2 = new Dummy('0');
if((string)$dummy2) {
echo "__toString evaluated as true".PHP_EOL;
} else {
echo "__toString evaluated as false".PHP_EOL;
}
这里发生的是uuToString方法返回字符串0或字符串1(注意,不要返回整数,返回字符串!)
“0”在if语句中的计算结果为false,“1”在if语句中的计算结果为true,因此可能对您的情况也有帮助。我非常确定这是不可能的,但不得不问:)NullObjects很有趣,但我正在尝试使我的datamapper设置完全将DB与域逻辑分离,并通过使用NullObjects,使用我的域模型的代码,我们需要意识到这一点。我可能会选择#2,它仍然需要我的域模型来扩展一个基本实体类,这不是完美的,但还行。谢谢你的意见。我也想到了toString,但不会完全按照我的意思做,但非常感谢你的评论