DocBlocks may start with #@+ and #@- to indicate that they are (the start) of a DocBlock template or the end of a template. In this commit I have changed the way a DocBlock is parsed to interpret this information and added tests to show for it. In addition I have added more comments to the Regular Expression responsible for splitting a DocBlock to show the business rules more clearly. This is the first step in implementing https://github.com/phpDocumentor/phpDocumentor2/issues/42.
The ReflectionDocBlock Component 
Introduction
The ReflectionDocBlock component of phpDocumentor provides a DocBlock parser that is 100% compatible with the PHPDoc standard.
With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.
Note
: this is a core component of phpDocumentor and is constantly being optimized for performance.
Installation
You can install the component in the following ways:
- Use the official Github repository (https://github.com/phpDocumentor/ReflectionDocBlock)
- Via Composer (http://packagist.org/packages/phpdocumentor/reflection-docblock)
Usage
The ReflectionDocBlock component is designed to work in an identical fashion to PHP's own Reflection extension (http://php.net/manual/en/book.reflection.php).
Parsing can be initiated by instantiating the
\phpDocumentor\Reflection\DocBlock() class and passing it a string containing
a DocBlock (including asterisks) or by passing an object supporting the
getDocComment() method.
Examples of objects having the
getDocComment()method are theReflectionClassand theReflectionMethodclasses of the PHP Reflection extension
Example:
$class = new ReflectionClass('MyClass');
$phpdoc = new \phpDocumentor\Reflection\DocBlock($class);
or
$docblock = <<<DOCBLOCK
/**
* This is a short description.
*
* This is a *long* description.
*
* @return void
*/
DOCBLOCK;
$phpdoc = new \phpDocumentor\Reflection\DocBlock($docblock);