Beispiel #1
0
 public function connectTo(Concentrate_Graph_Node $node)
 {
     $key = $node->getKey();
     if (!isset($this->outArcs[$key])) {
         $this->outArcs[$key] = $node;
         $node->inArcs[$this->getKey()] = $this;
         if (!$this->graph->isDirected()) {
             $node->connectTo($this);
         }
     }
 }
$swat = new Concentrate_Graph_Node($graph, 'Swat');
$store = new Concentrate_Graph_Node($graph, 'Store');
$swatYui = new Concentrate_Graph_Node($graph, 'SwatYui');
$admin = new Concentrate_Graph_Node($graph, 'Admin');
$site = new Concentrate_Graph_Node($graph, 'Site');
$xmlRpcAjax = new Concentrate_Graph_Node($graph, 'XML_RPCAjax');
$blorg = new Concentrate_Graph_Node($graph, 'Blorg');
$pinhole = new Concentrate_Graph_Node($graph, 'Pinhole');
$swat->connectTo($swatYui);
$store->connectTo($swat);
$store->connectTo($site);
$site->connectTo($xmlRpcAjax);
$site->connectTo($swat);
$admin->connectTo($swat);
$admin->connectTo($site);
$blorg->connectTo($swat);
$blorg->connectTo($site);
$blorg->connectTo($admin);
$pinhole->connectTo($swat);
$pinhole->connectTo($site);
$pinhole->connectTo($blorg);
$sorter = new Concentrate_Graph_TopologicalSorter();
$sorted = $sorter->sort($graph);
echo PHP_EOL;
echo $graph;
echo PHP_EOL;
echo 'Sorted: ', PHP_EOL;
foreach ($sorted as $k => $nodes) {
    echo ' - ', $k, ' => ', implode(', ', $nodes), PHP_EOL;
}
echo PHP_EOL;