0

我创建了一个主类,我的所有主要成员激活停用功能都在其中,与它们相关的所有其他事情也都完成了

这个主类(以及一些主要功能)是从各个地方调用的,包括通过 curl

现在让我们在课堂上使用我的激活功能(主要功能之一)

activationFunction($data)
{
//use data to generate total, discount etc

$this->giveAffiliates($total);
if($this->_error){ return $this->_error;}

$this->activateOrder($total,$discount,id);
if($this->_error){ return $this->_error;}

$this->activatePlan($total,$discount,id);
if($this->_error){ return $this->_error;}

//similarily calling various functions which themselves call other functions

}

activatePlan()
{

try{

//call other functions and do necessary stuff for plan A

 }
catch(Exception $e)
{

$this->_error.="Error occurred while activating plan A";

}
//for plan B
try{

//call other functions and do necessary stuff for plan B

}
catch(Exception $e)
{

$this->_error.="Error occurred while activating plan B";

}

//for other plans similarily

 }
 }

现在的问题是if($this->_error){ return $this->_error;}在每个子函数调用之后。(我总共有大约 35 条类似的行)我需要这个,因为我需要将错误发送给用户并阻止我的代码进一步运行。但这使我的代码很长而且效率不高。如何减少所有这些返回,但在其中一个子功能失败时向用户显示错误并尝试保持我的代码结构不变。我必须从每个主函数调用各种子函数(这是我无法更改的,其中只有一个类和各种函数)并且错误大多必须在每个级别捕获并返回(很少有简单的错误不是返回并允许代码继续运行)。我还必须记住,以后可以添加各种其他功能,它应该足够灵活,以后可以处理所有这些

4

2 回答 2

2

您说“它使我的代码变长且效率低下”。你到底是什么意思“效率不高”?你是说你的代码很慢吗?

如果您的代码太慢,那么您需要使用XDebug之类的工具来分析您的代码,以准确找出您的代码慢的地方。如果你不测量,你只是在猜测问题是什么。

于 2013-05-03T20:55:58.730 回答
0

我认为每个函数都应该处理自己的错误/异常。这样您就不会将所有错误处理都推到调用该函数的每个地方。函数的调用者不需要包含有关如何从被调用的函数生成错误通知的逻辑。

所以说你让每个函数在错误条件下抛出一个异常。然后你可以做这样的事情:

activationFunction($data)
{
  //use data to generate total, discount etc
  try {
    $this->giveAffiliates($total);
    $this->activateOrder($total,$discount,id);
    $this->activatePlan($total,$discount,id);
  } catch (Exception $e) {
    // throw the exception up the call chain
    throw $e;
  }
}
于 2013-05-03T21:00:11.007 回答