/** * Create a signal collection from array. * * @param array $array * @return GraphCommons\Graph\SignalCollection * @throws \InvalidArgumentException */ public static final function fromArray(array $array) : SignalCollection { if (empty($array)) { throw new \InvalidArgumentException('Empty signals array given!'); } $signals = new SignalCollection(); foreach ($array as $array) { if (!isset($array['action'], $array['parameters'])) { throw new \InvalidArgumentException("Signal 'action' and 'parameters' fields are required!"); } $signal = (new Signal())->setAction($array['action'])->setParameters($array['parameters']); $signals->add($signal); } return $signals; }
/** * Fill a lib's graph object. * * @param GraphCommons\Graph\Graph $graph * @param array|object $g * @return GraphCommons\Graph\Graph */ private final function fillGraph(Graph $graph, $g) : Graph { // force input being an object $g = Util::toObject($g); if (isset($g->id)) { $graph->setId($g->id)->setName($g->name)->setDescription($g->description)->setSubtitle($g->subtitle)->setStatus($g->status)->setCreatedAt($g->created_at); // add signals if exists if (isset($g->signals)) { $array = []; foreach ($g->signals as $i => $signal) { $action = $signal->action; unset($signal->action); $array[$i]['action'] = Signal::detectAction($action); $array[$i]['parameters'] = Util::toArray($signal); } $graph->setSignals(SignalCollection::fromArray($array)); } } return $graph; }