Reference implementation for TypeLang Printer.
TypeLang Printer is available as Composer repository and can be installed using the following command in a root of your project:
composer require type-lang/printer
$parser = new \TypeLang\Parser\Parser();
$type = $parser->parseType(<<<'PHP'
array{
field1: (callable(Example,int):mixed),
field2: list<Some>,
field3: iterable<array-key, array{int, non-empty-string}>,
Some::CONST_*,
"\njson_flags": \JSON_*,
...
}
PHP);
// Print Statement
$native = new \TypeLang\Printer\NativeTypePrinter();
echo $native->print($type);
// Expected Output:
// array
$phpdoc = new \TypeLang\Printer\PrettyPrinter();
echo $phpdoc->print($type);
// Expected Output:
// array{
// field1: callable(Example, int): mixed,
// field2: list<Some>,
// field3: iterable<array-key, array{
// int,
// non-empty-string
// }>,
// Some::CONST_*,
// "\njson_flags": \JSON_*,
// ...
// }