Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在if语句中如何处理实例化对象?_Php_Object_Boolean - Fatal编程技术网

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

Php 在if语句中如何处理实例化对象?,php,object,boolean,Php,Object,Boolean,为了处理到字符串的转换,php中有一个神奇的方法_toString()。但是,如果我有一个实例化对象,例如: $myObj = new Object(); $myObj->doSomeThings(); if ($myObj) { // Some stuff to do here } $this->switch = true; 在if条件中计算$myObj时,如何告诉PHP该怎么做 我感到好奇的主要原因是,我希望有一个可链接的方法,它也可以在if语句中直接有条件地进行计

为了处理到字符串的转换,php中有一个神奇的方法_toString()。但是,如果我有一个实例化对象,例如:

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

if ($myObj) {
    // Some stuff to do here
}
$this->switch = true;
在if条件中计算$myObj时,如何告诉PHP该怎么做

我感到好奇的主要原因是,我希望有一个可链接的方法,它也可以在if语句中直接有条件地进行计算

if ($myObj->chainMethodA($var)->chainMethodA($var2)->chainMethodB($var)) {
鉴于所有这些方法都可以:

return $this;
如何基于类属性处理对象的布尔求值,例如:

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

if ($myObj) {
    // Some stuff to do here
}
$this->switch = true;
我知道我总能做到这一点:


但是我更愿意自动处理这个问题。

这是代码偏好的问题

如果您使用的是方法链接,那么可以按照您的建议在循环中链接它们。这源于丑陋的IF语句,但效果很好

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

所以你有这个:

$myObj = new Object();
$myObj->doSomeThings();
$myObj->chainMethodA($var)->chainMethodA($var2)->chainMethodB($var);
如果可以的话,您可以:

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

但是,我建议将函数包装到另一个bool方法或另一个类中,因此您所要做的就是:

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

}

为什么不创建自己的getter函数,比如
function getSwitch(){return$this->switch;}
?我打赌我在这里错了,但是你不能在那个对象中重写
\uu toString
方法吗?@BrianGraham是的,但是这个方法会在这样的if语句中被调用吗?@elclans是的,我总是可以这样做的。我不想这样做,因为我将它用作API对象。我想假设开发人员总是忘记最后的方法调用。可以简单地尝试一下,看看它是否有效吗?我现在不能在我这边测试。