我目前正在使用 Botman 框架让我的机器人读取 XML 文件。目前,我的机器人能够从 XML 文件中获取数据并将其输出。我在将 XML 文件保存回全局变量时遇到问题(以便稍后可以在代码中重用)。这是我尝试执行此操作时收到的当前错误消息:"message": "Serialization of 'SimpleXMLElement' is not allowed","exception": "Exception","file": "C:\\Users\\Jack\\finalyearproject\\gfyp\\gfyp\\vendor\\opis\\closure\\src\\SerializableClosure.php 我这里遇到问题:public function nodeTest($xmlFile, $answer){ $this->XMLFile = $xmlFile; ...}这是函数之前的类代码:class StartConversation extends Conversation{ public $XMLFile; ... public function askForDatabase() { $question = Question::create('Test test test?') ->fallback('Unable to create a new database') ->callbackId('create_database') ->addButtons([ Button::create('Suicide')->value('suic'), Button::create('Self-harm')->value('sh'), ]); $this->ask($question, function (Answer $answer) { $xmlResult = $this->testXMLGrabFunction($answer); if ($answer->getValue() == 'suic') { $this->nodeTest($xmlResult, $answer); } if ($answer->getValue() == 'sh') { $this->nodeTest($xmlResult, $answer); } }); }}这是我最初获取 XML 文件的类:class testClass{ function getXMLCategory($categoryName) { $xml = simplexml_load_file('ST-working-age-23-3-20.xml'); if($categoryName == 'suic') { $xml = $xml->node[0]; return $xml; } elseif($categoryName == 'sh') { $xml = $xml->node[1]; return $xml; } else { return null; } }}任何建议都会很棒 - 谢谢
1 回答
www说
TA贡献1775条经验 获得超8个赞
错误消息告诉您代码中的某处正在尝试序列化对象,即将其转换为字符串表示形式。这可能在您正在使用的框架中,并且您所认为的“全局变量”实际上是以某种形式的会话存储在请求之间,例如在磁盘上的文件中。
由于 SimpleXML 的实现方式,它不允许执行此操作。最简单的解决方法是通过调用 来存储 XML ->asXML()
,然后在需要时使用 重新解析它simplexml_load_string()
。
您将希望尽可能少地进行往返,因此值得更好地了解框架实际上如何处理“全局变量”,以便您可以尝试对每个请求执行一次。
- 1 回答
- 0 关注
- 117 浏览
添加回答
举报
0/150
提交
取消