Php API响应-从包含的类收集错误
我正在开发一个RESTful,我一直在收集返回给用户的消息。基本上,根据选择的选项,会动态地包含一些类。我将尝试提供一个真实世界的分解。我们有一个HTML电子邮件tempalte maker-根据选择的模板,将包括一个php脚本。这个脚本可能有警告,我需要将它们传递到“上游”,以便API可以报告它们。所以我们有这样的东西(->=includes) API->HTMLGenerator->(动态)template-script.php 我需要模板脚本能够向API控制器报告错误,以便API能够向API用户报告错误。不确定实现此目的的最佳方法/实践 到目前为止,我的想法可能是一个单例或会话变量,模板脚本可以向其中添加消息,然后API控制器可以报告它们。有什么想法吗 主要API REST通过POST创建到/v1/html基本上只是:Php API响应-从包含的类收集错误,php,rest,error-handling,Php,Rest,Error Handling,我正在开发一个RESTful,我一直在收集返回给用户的消息。基本上,根据选择的选项,会动态地包含一些类。我将尝试提供一个真实世界的分解。我们有一个HTML电子邮件tempalte maker-根据选择的模板,将包括一个php脚本。这个脚本可能有警告,我需要将它们传递到“上游”,以便API可以报告它们。所以我们有这样的东西(->=includes) API->HTMLGenerator->(动态)template-script.php 我需要模板脚本能够向API控制器报告错误,以便API能够向AP
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);
您需要使用自定义错误处理程序 请参阅此链接-
它允许我们处理可能抛出的错误以捕获并处理它。因此,当您捕获它时,您可以将其传递给父类并进一步向上游进行进一步处理。全局对象可以工作,也可以设置错误处理程序,但这些只是黑客攻击。最干净的选择是修改你的应用程序元素来完成它们应该做的事情——返回那些消息 这些不应该太难做到:
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);
让我再补充一点,这可能表明全球黑客是最好的。包含的脚本是由非常初级的程序员创建的。所以它的调用函数在我们的主HTMLGenerator类中。所以脚本看起来是这样的:
code
$h=new-HTMLGenerator()$h->addHeader($var);-所以脚本捕获和收集错误不会真正起作用。是HTMLGenerator类需要传递回主API控制器-绕过各种中介脚本-有意义吗?任何优雅的方式。我们试图让所有的方法都不返回任何东西给juniorI。恐怕我不了解你的脚本的组织,你能提供一个双方的例子(HTMLGenerator&template script.php)吗?请标记哪个代码属于哪个脚本。编辑了原始帖子。由于一些代码的专有性质,非常简单-但希望这将显示基本的工作流程。动态脚本将只是一个指令。异常将得到正确处理,但大多数异常都是警告或错误,需要报告,以便API用户可以决定要做什么。例如,仅仅因为文本太长,并不意味着它不工作,它可能看起来不是最好的或不完整的。这些是我们试图收集并报告的警告/错误。感谢advacne,您可以将警告/错误作为私有$errors(array)属性存储在HTMLGenerator类中。这样,HTMLGenerator实例可以添加自己的错误,您还可以实现公共方法addError(),这样动态脚本也可以添加错误。