<?php
interface INode
{
public function connectToEdge(Edge $edge);
}
final class Node extends Nette\Object 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 extends Nette\Object
{
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:
39.1 ms | 402 KiB | 5 Q