Generators
GraPHP UML used at least two components :
- the mathematical graph/network GraPHP library to draw UML diagrams.
- any generator that implement the following contract. GraPHP UML uses GraphVizGenerator as default, but allow others that may be registered later at runtime. UmlWrite includes as alternative the GraPHP PlantUML Generator
Contract
Each generator used to build graph statements should implement following interface.
<?php
namespace Bartlett\GraphUml\Generator;
use Bartlett\GraphUml\Formatter\FormatterInterface;
use Graphp\Graph\Graph;
use ReflectionClass;
use ReflectionExtension;
interface GeneratorInterface
{
public function setOptions(array $values): void;
public function getFormatter(): FormatterInterface;
public function getName(): string;
public function getPrefix(): string;
public function getLabelClass(ReflectionClass $reflection): string;
public function getLabelExtension(ReflectionExtension $reflection): string;
public function createScript(Graph $graph): string;
public function createImageFile(Graph $graph, string $cmdFormat): string;
}
-
setOptions()
declares all options used to personalize generator's formatters. -
getFormatter()
is in charge to retrieve instance of a formatter that will produce vertex labels. -
getName()
identifies the generator with a unique name. -
getPrefix()
prefixes all public attributes (graph, node, edge, cluster) only if necessary. -
getLabelClass()
is in charge to make the label of the vertex corresponding to a class or interface element. -
getLabelExtension()
is in charge to make the label of the vertex corresponding to an extension element. -
createScript()
is in charge to build graph statements depends on generator used. -
createImageFile()
is in charge to draw image graph in format asked (seesetFormat()
).
Common functions
An AbstractGenerator class allow to implement basic image creation behaviors common to all generators.