The way things were set up now in the `phpunit` job, no matter whether tests passed or failed, the workflow would always continue. I suspect this may have been set-up this way to make sure that all variations of test runs will actually be run ? The downside is that, while you will see a ❌ for the individual build in the workflow summary, the workflow will not be marked as failed, nor will the individual test builds be marked as failed. If we look back at the last time the workflow was run completely, this can be seen in the annotations below the summary, which show that the Windows test runs all failed. https://github.com/phpDocumentor/ReflectionDocBlock/actions/runs/370378454 I'm proposing to change this now by: * Removing the `continue-on-error` for the test run. * Adding the `fail-fast` key and setting it to `false`. By default this key is set to `true`, which means that if any individual build within the job fails, all other builds within the job will be cancelled. By setting it to `false`, all builds in the matrix will still be run, but if any of them fail, the workflow will be marked as "failed".
ReflectionDocBlock
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.
Installation
composer require phpdocumentor/reflection-docblock
Usage
In order to parse the DocBlock one needs a DocBlockFactory that can be
instantiated using its createInstance factory method like this:
$factory = \phpDocumentor\Reflection\DocBlockFactory::createInstance();
Then we can use the create method of the factory to interpret the DocBlock.
Please note that it is also possible to provide a class that has the
getDocComment() method, such as an object of type ReflectionClass, the
create method will read that if it exists.
$docComment = <<<DOCCOMMENT
/**
* This is an example of a summary.
*
* This is a Description. A Summary and Description are separated by either
* two subsequent newlines (thus a whiteline in between as can be seen in this
* example), or when the Summary ends with a dot (`.`) and some form of
* whitespace.
*/
DOCCOMMENT;
$docblock = $factory->create($docComment);
The create method will yield an object of type \phpDocumentor\Reflection\DocBlock
whose methods can be queried:
// Contains the summary for this DocBlock
$summary = $docblock->getSummary();
// Contains \phpDocumentor\Reflection\DocBlock\Description object
$description = $docblock->getDescription();
// You can either cast it to string
$description = (string) $docblock->getDescription();
// Or use the render method to get a string representation of the Description.
$description = $docblock->getDescription()->render();
For more examples it would be best to review the scripts in the
/examplesfolder.