如何在if语句中处理实例化对象?

时间:2013-05-06 23:36:45

标签: php object boolean

为了处理转换为字符串,php中存在魔术方法__toString()。但是,如果我有一个实例化对象,例如:

$myObj = new Object();
$myObj->doSomeThings();

if ($myObj) {
    // Some stuff to do here
}

如何判断PHP在if条件下评估$ myObj时要做什么?

我很好奇的主要原因是,我希望有一个可链接的方法,也可以在if语句中有条件地直接评估。

if ($myObj->chainMethodA($var)->chainMethodA($var2)->chainMethodB($var)) {

鉴于所有这些方法都有:

return $this;

如何根据类属性处理对象的布尔评估,例如:

$this->switch = true;

我知道我可以随时这个

if ($myObj->chainMethodA($var)->chainMethodA($var2)->chainMethodB($var)->switch) {

但我更愿意自动处理。

1 个答案:

答案 0 :(得分:0)

这是代码偏好的问题。

如果您正在使用方法链接,则可以在循环时将它们链接在循环中。这起源于丑陋的IF语句,但工作正常。

另一种方法是调用每个方法,然后检查开关(使用on而不是getter)。

所以你有这个:

$myObj = new Object();
$myObj->doSomeThings();
$myObj->chainMethodA($var)->chainMethodA($var2)->chainMethodB($var);

如果可以:

if( $myObj->switch ){
...
}

if( $myObj->switchState() ){
..
}

然而,我所采取的是将你的函数包装在另一个bool方法或另一个类中,所以你所要做的就是:

$myObj = new Object();
if( $myObj->doAlotOfThings($var1,$var2) ){

}