Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php API响应-从包含的类收集错误_Php_Rest_Error Handling - Fatal编程技术网

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

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

我正在开发一个RESTful,我一直在收集返回给用户的消息。基本上,根据选择的选项,会动态地包含一些类。我将尝试提供一个真实世界的分解。我们有一个HTML电子邮件tempalte maker-根据选择的模板,将包括一个php脚本。这个脚本可能有警告,我需要将它们传递到“上游”,以便API可以报告它们。所以我们有这样的东西(->=includes)

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

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

请参阅此链接-


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

全局对象可以工作,也可以设置错误处理程序,但这些只是黑客攻击。最干净的选择是修改你的应用程序元素来完成它们应该做的事情——返回那些消息

这些不应该太难做到:

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(),这样动态脚本也可以添加错误。