Итак, после некоторого изучения мне удалось проанализировать некоторый XML, который я получаю через Guzzle через simplexml_load_string. Проблема в том, что когда я потом попытаюсь отправить задание для каждого из детей, используя следующий код, я получаю сообщение об ошибке «Сериализация« SimpleXMLElement »не допускается».Невозможно сериализовать SimpleXMLElement в Laravel job
$parent = $this->getParent($keywords);
foreach ($parent->children() as $child) {
dispatch(new ProcessChild($event, true), $this->otherVar);
}
Чтобы исправить это, я могу использовать следующий трюк для преобразования XML в массив;
json_decode(json_encode($child))
однако, в то время как это означает, что я могу отправить данные на новое место работы, это означает, что, насколько я могу работать, у меня нет никакого способа, чтобы получить доступ к @attributes. Альтернативой может быть что-то вроде следующего:
// ParentJob
$parent = $this->getParent($keywords);
foreach ($parent->children() as $child) {
dispatch(new ProcessChild($child->asXML, true), $this->otherVar);
}
// ChildJob
public function __construct($xml, $otherVar)
{
$this->xml = simplexml_load_string($xml);
$this->otherVar = $otherVar;
}
однако он все еще бросает ошибку сериализации на рассылку по какой-то причине, что я не могу работать, так как sould посылать только необработанный XML, а не объект.
Итак, мой главный вопрос: каким будет правильный способ передачи и дочерний SimpleXMLObject для работы в Laravel 5.3?
(не хватает чего-то, как перекручивание через все узлы/атрибуты и строить мой собственный набор из них)
$ xml передается дочернему заданию с ($ child-> asXML()). Но я не могу использовать 'simplexml_load_string ($ this-> xml);'. Он говорит ту же ошибку. Сериализация «SimpleXMLElement» не допускается. У вас есть идеи? –