我目前正在使用 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 關注
- 159 瀏覽
添加回答
舉報
0/150
提交
取消