Php 在if语句中如何处理实例化对象?
为了处理到字符串的转换,php中有一个神奇的方法_toString()。但是,如果我有一个实例化对象,例如: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语句中直接有条件地进行计
$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对象。我想假设开发人员总是忘记最后的方法调用。可以简单地尝试一下,看看它是否有效吗?我现在不能在我这边测试。