
The reference PHPDoc parser for TypeLang. It turns a raw /** ... */
comment into an immutable, iterable object graph of its description and tags.
Full documentation is available at typelang.dev.
Install the package via Composer:
composer require type-lang/phpdocRequirements:
- PHP 8.4+
DocBlockParser::parse() returns a DocBlock — an immutable collection of the
comment's description and tags:
useTypeLang\PhpDoc\DocBlockParser;
$parser = newDocBlockParser();
$block = $parser->parse(<<<'PHPDOC' /** * Sends a notification to the given recipient. * * @see Mailer::send() The underlying transport. * @link https://example.com/docs Delivery documentation. * @return bool */
PHPDOC);
// The leading description (everything before the first tag)echo$block->description;
// "Sends a notification to the given recipient."// Tags form an ordered, countable, iterable collectionecho\count($block); // 3foreach ($blockas$tag) {
echo$tag->name; // "see", "link", "return"
}
// Known tags expose their parsed parts$see = $block[0]; // SeeTagecho$see->reference; // "Mailer::send()"A DocBlock is composed of three kinds of elements:
- DocBlock — the whole comment; behaves as a
Countable,IteratorAggregateandArrayAccesscollection of its tags. - Description — the leading text. A plain
Descriptionis just a string; aTaggedDescriptionalso holds inline tags like{@see ...}. - Tag — a name (without the leading
@) and an optional description. Known tags (@see,@link, ...) extend the baseTagwith their own parsed parts; an unregistered tag keeps its whole suffix as the description.
See the documentation for the full list of supported tags.