为了处理转换为字符串,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) {
但我更愿意自动处理。
答案 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) ){
}