phabel/src/PluginGraph/Graph.php

56 lines
1.1 KiB
PHP

<?php
namespace Phabel\PluginGraph;
/**
* Graph API wrapper.
*/
class Graph
{
/**
* Graph instance.
*/
private GraphInternal $graph;
/**
* Constructr.
*/
public function __construct()
{
$this->graph = new GraphInternal;
}
/**
* Get new package context.
*
* @return PackageContext
*/
public function getPackageContext(): PackageContext
{
return $this->graph->getPackageContext();
}
/**
* Add plugin.
*
* @param string $plugin Plugin to add
* @param array $config Plugin configuration
* @param PackageContext $ctx Package context
*
* @psalm-param class-string<PluginInterface> $plugin Plugin name
*
* @return Node[]
*/
public function addPlugin(string $plugin, array $config, PackageContext $ctx): array
{
return $this->graph->addPlugin($plugin, $config, $ctx);
}
/**
* Flatten graph.
*
* @return SplQueue<SplQueue<Plugin>>
*/
public function flatten(): \SplQueue
{
return $this->graph->flatten();
}
}