以下是我的代码的简化:
class myclass{
public function one($called_from = null){
if ( $called_from != 'two'){
return $this->two();
}
echo 'done';
}
public function two(){
return $this->one(__FUNCTION__);
}
}
$obj = new myclass;
$obj->one();
现在我想添加另一种方法来进行比较(我在谈论if
语句到myclass::one
)。所以这是新代码:
class myclass{
public function one($called_from = null){
$this->three($called_from);
echo 'done';
}
public function two(){
return $this->one(__FUNCTION__);
}
public function three($called_from){
if ( $called_from != 'two'){
return $this->two();
}
}
}
$obj = new myclass;
$obj->one();
但它与第一版代码不同。为什么?我无法解释有什么不同,因为它需要显示我现实中存在的其他代码。
无论如何,您是否知道我如何通过另一种方法进行比较(进入myclass::one
)并保持整个过程中的确切行为?
另外,对于我的信息(与问题无关),您知道为什么该行会在this代码中两次执行吗?我希望它应该执行一次。
答案 0 :(得分:1)
这是第二段代码中的操作顺序:
apply(df,function(x) x[x>5])
,$a = "2012-05-18 usr abc removed device id=858 sn=abc cmmac=000 drumac=123";
$b = "2012-05-18 usr abc removed device id=858 sn=abc cmmac=000 drumac=12352015-03-26 usr mabdel001c removed device id=814 sn=abcd cmmac=1234 drumac=000";
Echo str_replace($a, "", $b);
。one()
。$called_from = null
中,three(null)
成功,因此会调用three
。if
。
two()
one("two")
失败,因此three("two")
只会返回。if
。three
由于"done"
被调用两次,它会两次回复"done"
。