1. Go to this page and download the library: Download smoren/graph-tools library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
smoren / graph-tools example snippets
use Smoren\GraphTools\Models\Edge;
use Smoren\GraphTools\Models\Vertex;
use Smoren\GraphTools\Traverse\Traverse;
use Smoren\GraphTools\Traverse\TraverseDirect;
use Smoren\GraphTools\Traverse\TraverseReverse;
use Smoren\GraphTools\Filters\TransparentTraverseFilter;
use Smoren\GraphTools\Store\PreloadedGraphRepository;
use Smoren\GraphTools\Structs\FilterConfig;
$vertexes = [
new Vertex(1, 1, null), // id, type, extra data
new Vertex(2, 1, null),
new Vertex(3, 1, null),
];
$connections = [
new Edge(1, 1, 1, 2), // id, type, from id, to id
new Edge(2, 1, 2, 3),
];
// Creating repository
$repo = new PreloadedGraphRepository($vertexes, $connections);
// Creating direct traverse model
$traverse = new TraverseDirect($repo);
$contexts = $traverse->generate(
$repo->getVertexById(1),
new TransparentTraverseFilter([FilterConfig::PREVENT_LOOP_PASS])
);
// Let's go traverse
$vertexIds = [];
foreach($contexts as $context) {
$vertexIds[] = $context->getVertex()->getId();
}
print_r($vertexIds); // [1, 2, 3]
// Creating reverse traverse model
$traverse = new TraverseReverse($repo);
$contexts = $traverse->generate(
$repo->getVertexById(3),
new TransparentTraverseFilter([FilterConfig::PREVENT_LOOP_PASS])
);
// Let's go traverse
$vertexIds = [];
foreach($contexts as $context) {
$vertexIds[] = $context->getVertex()->getId();
}
print_r($vertexIds); // [3, 2, 1]
$traverse = new Traverse($repo);
// Creating non-directed traverse model
$contexts = $traverse->generate(
$repo->getVertexById(2),
new TransparentTraverseFilter([FilterConfig::PREVENT_LOOP_PASS])
);
// Let's go traverse
$vertexIds = [];
$loopsCount = 0;
foreach($contexts as $context) {
if($context->isLoop()) {
$contexts->send(Traverse::STOP_BRANCH);
++$loopsCount;
} else {
$vertexIds[] = $context->getVertex()->getId();
}
}
print_r($vertexIds); // [2, 3, 1]
var_dump($loopsCount); // 2
// Creating non-directed traverse model with loop prevent control
$contexts = $traverse->generate(
$repo->getVertexById(2),
new TransparentTraverseFilter([FilterConfig::PREVENT_LOOP_PASS, FilterConfig::PREVENT_LOOP_HANDLE])
);
// Let's go traverse
$vertexIds = [];
foreach($contexts as $context) {
$vertexIds[] = $context->getVertex()->getId();
}
print_r($vertexIds); // [2, 3, 1]
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.