I'm using the Reflection API in PHP to pull a DocComment (PHPDoc) string from a method
$r = new ReflectionMethod($object); $comment = $r->getDocComment();
This will return a string that looks something like this (depending on how well the method was documented)
/** * Does this great things * * @param string $thing * @return Some_Great_Thing */
Are there any built-in methods or functions that can parse a PHP Doc Comment String into a data structure?
$object = some_magic_function_or_method($comment_string); echo 'Returns a: ', $object->return;
Lacking that, what part of the PHPDoc source code should I be looking at the do this myself.
Lacking and/or in addition to that, is there third party code that's considered "better" at this that the PHPDoc code?
I realize parsing these strings isn't rocket science, or even computer science, but I'd prefer a well tested library/routine/method that's been built to deal with a lot of the janky, semi-non-correct PHP Doc code that might exist in the wild.
I am surprised this wasn't mentioned yet: what about using Zend_Reflection of Zend Framework? This may come in handy especially if you work with a software built on Zend Framework like Magento.
See the Zend Framework Manual for some code examples and the API Documentation for the available methods.
There are different ways to do this:
Let's go for the simple case and assume you have an existing class you want to inspect.
The code would be like this (untested, please forgive me):
$method = new Zend_Reflection_Method($class, 'yourMethod'); $docblock = $method->getDocBlock(); if ($docBlock->hasTag('return')) { $tagReturn = $docBlock->getTag('return'); // $tagReturn is an instance of Zend_Reflection_Docblock_Tag_Return echo "Returns a: " . $tagReturn->getType() . "<br>"; echo "Comment for return type: " . $tagReturn->getDescription(); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With