2011-07-08 39 views
0

情况如下:有什么方法可以从另一种方法停止对象方法的执行吗?

有一个单独的对象,它负责生成网页的内容,我们可以把它叫做内容。另一个对象是它的'父母 - 核心对象。 内容对象调用核心方法* Check_parameters_count($ parameters_count)*,所以核心有检查,如果给定参数的URI数等于在执行这个方法($ parameters_count)给出的整数,如果不是 - 核心应该生成错误页面并停止执行内容的渲染方法。

有没有什么办法可以做到这一点,而不使用如果声明?只需在内容类中使用* $ core-> Check_parameters_count(2)*以简化特定渲染引擎程序员的工作。

一切看起来应该与此类似:

class Core { 
    public function Check_parameters_count($parameters_count) { 
     if (count($this->parameters) != $parameters_count) { 
      $this->Show_error(404); 
      $this->Stop_executing($content, 'Render'); 
      //or 
      stop($content->Render); 
      //or something similar.. 
     } 
    } 
} 

class Content { 
    public function Render() { 
     //check given parameters so we could know which page should be rendered and how many parameters should be given 
     //... 
     //lets say we should have exactly 2 parameters 
     $parameters_count = 2; 
     //check it 
     $core->Check_parameters_count($parameters_count); 
     //if parameters count matched - continue method execution 
     //... 
    } 
} 

回答

1

抛出一个exception

你有3个范围:

  • 功能A(函数B的调用者)
  • 功能B
  • 来电显示的功能的

如果你扔在功能B异常,并在函数A的调用者中创建一个try/catch块,函数A的执行将被异常中断。事实上 - 所有的代码执行都会被中断,直到被相应的try/catch块封装。

+0

好主意:)这正是我一直在寻找的。 这是第一次例外对我有用,因为我总是停止使用它们,因为同时缺少多错误投掷。 –

相关问题