/** * Load PhpFlo graph definition. * * @param stdClass $definition * @return \PhpFlo\Graph */ public static function loadDefinition($definition) { $graph = new Graph($definition->properties->name); foreach ($definition->processes as $id => $def) { $graph->addNode($id, $def->component); } foreach ($definition->connections as $conn) { if (isset($conn->data)) { $graph->addInitial($conn->data, $conn->tgt->process, $conn->tgt->port); continue; } $graph->addEdge($conn->src->process, $conn->src->port, $conn->tgt->process, $conn->tgt->port); } return $graph; }
public static function loadFile($file) { if (!file_exists($file)) { throw new \InvalidArgumentException("File {$file} not found"); } $definition = @json_decode(file_get_contents($file)); if (!$definition) { throw new \InvalidArgumentException("Failed to parse PhpFlo graph definition file {$file}"); } $graph = new Graph($definition->properties->name); foreach ($definition->processes as $id => $def) { $graph->addNode($id, $def->component); } foreach ($definition->connections as $conn) { if (isset($conn->data)) { $graph->addInitial($conn->data, $conn->tgt->process, $conn->tgt->port); continue; } $graph->addEdge($conn->src->process, $conn->src->port, $conn->tgt->process, $conn->tgt->port); } return $graph; }