API响应 - 从包含的类中收集错误

时间:2013-07-29 21:37:41

标签: php rest error-handling

我正在开发一个RESTful,并坚持收集回复给用户的消息。基本上,根据所选的选项,动态包含几个类。我会尝试提供真实世界的分解。我们有一个HTML-email-tempalte制造商 - 根据所选的模板,将包含一个PHP脚本。此脚本可能有警告,我需要将它们“上游”传递给它,以便API可以报告它们。所以我们有类似的东西( - > =包含)

API - > HTMLGenerator - > (动态)template-script.php

我需要模板脚本才能向API控制器报告错误,以便API可以向API用户报告错误。不确定实现这一目标的最佳方法/实践。

到目前为止,我的想法可能是模板脚本可以添加消息的单例或会话变量,然后API控制器可以报告它们。有什么想法吗?

主要API

REST通过POST创建/ v1 / html基本上只是:

class API {
   require($dynamic_script);
   $errors = array('warnings'=>array('warning1',waring2'));
   //set http header and return JSON
}

HTMLGenerator

class HTMLGenerator {
//basically some wrappers for junior / non-programmers 
  function addHeading($text) {
    //Add a header and do some checks. 
    if(strlen($text) > $warnTooLong )
       HTMLErrors::addWarning("Message");

  }
}

动态脚本

$h = new HTMLGenerator();
$h->addHeader($text);
$h->addImage($imageUrl);

2 个答案:

答案 0 :(得分:0)

您需要使用自定义错误处理程序。

请参阅此链接 - http://php.net/manual/en/function.set-error-handler.php

它允许我们处理可能抛出的错误以捕获它并处理它。因此,当您捕获它时,您可以将其传递给父类,并在上游进行进一步处理。

答案 1 :(得分:0)

全局对象也可以工作,也可以使用set_error_handler,但这些只是黑客攻击。最干净的选择是修改您的应用程序元素以执行他们想要做的事情 - 返回这些消息。

这些不应该太难:

function myOldFunction($param1, $param2)
{
  // do something
}

以这种方式修改:

function myOldFunction($param1, $param2, array &$messages = array())
{
  // do something
  $messages[] = 'hey mama, i\'m on stack overflow!';
}

用法:

$messages = array();
myOldFunction(1, 2, $messages);
print_r($messages);