在OOP中使用类似goto的函数或方法


Using goto like function or method in OOP

我有一个有很多方法的类,我想找到让这个类从一个方法跳到另一个方法的方法。

class foo{
  private $state = false; 
  function a(){
    if($this->state == false){
      //jumpt to method b
    }
    //other code 
  }   
 function b(){
   //
 }
function c(){
}
}

正如您所看到的,我正试图从a()跳到b(),在该语句之后停止a()中的所有内容。

function a(){
if($this->state == false){
  $this->b();
  return;
  }
 //other code 
}

这将调用b(),并根据需要跳过a()中的所有其他内容。

对于gosub类型的行为,它将返回到a()并继续,那么:

function a(){
    if($this->state == false){
      $this->b();
    }
    //other code 
  }

对于真正的goto类型bahaviour不返回a():

function a(){
    if($this->state == false){
      return $this->b();
    }
    //other code 
  }

您只需要将其余代码放入else:

class foo{
  private $state = false; 
  function a(){
    if($this->state == false){
      $this->b();
    }
    else {
      //other code 
    }
  }   
  function b(){
    //
  }
  function c(){
  }
}

或者您可以在致电b 后返回

if($this->state == false){
   $this->b();
   return;
}