3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface INode { public function connectToEdge(Edge $edge); } final class Node implements INode { private $name; private $value = null; private $edges = array(); public function __construct($name, $value = null) { $this->name = $name; $this->value = $value; } public function getName() { return $this->name; } public function getValue() { return $this->value; } public function connectToEdge(Edge $edge) { $this->edges[spl_object_hash($edge)] = $edge; } } final class Edge { private $nodeFrom; private $nodeTo; private $directional = true; private $name = null; public function __construct(Node $nodeFrom, Node $nodeTo, $directional = true, $name = null) { $this->nodeFrom = $nodeFrom; $this->nodeTo = $nodeTo; $this->directional = $directional; $this->name = $name; $this->nodeFrom->connectToEdge($this); $this->nodeTo->connectToEdge($this); } } $node1 = new Node('uzel_1'); $node2 = new Node('uzel_2'); $edge1 = new Edge($node1, $node2, true, 'hrana mezi uzel_1 - uzel_2'); $edge2 = new Edge($node1, $node2, true, 'hrana mezi uzel_1 - uzel_2 v2'); dump(spl_object_hash($edge1)); dump(spl_object_hash($edge2));

preferences:
45.29 ms | 402 KiB | 5 Q