0

我正在研究 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
}

HTML生成器

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);
4

2 回答 2

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);
于 2013-07-29T22:08:04.750 回答
0

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

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

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

于 2013-07-29T22:00:42.557 回答