我正在开发一个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);
答案 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);