Yahav and all,
On Sun, Jan 6, 2013 at 4:58 PM, Yahav Gindi Bar <[email protected]> wrote:
> Hi internals!
>
> In one of the discussions (about the "deprecated" keyword, to be specific),
> it was been said that adding ability to read doc-comment annotation could
> be handy. Personally, I really think it can be great.
>
> So, I've created an RFC that propose to improve the Reflection extension by
> adding the ability to read annotations decorated in the doc-comment.
>
> https://wiki.php.net/rfc/reflection_doccomment_annotations
>
> What is your opinion about this?
>
> Regards,
> Yahav.
>
Why does this need to be part of Reflection? Seems a rather odd place for
it IMHO, since it basically hard-codes the functionality into part of the
core that's not trivially extendable (at least $class->getMethods() is hard
to override)...
Instead, what about adding a SPL class to parse the comment. Something like
class SplAnnotationParser {
const PARSE_DEFAULT = 1;
const PARSE_FUNCTION = 2;
public function __construct($rules = self::PARSE_DEFAULT);
/**
* @param string $comment The comment to parse
* @returns array An array of parsed annotations, pursuant to the
ruleset used
public function parseAnnotations($comment);
}
That way, you'd do:
$parser = new SplAnnotationParser(SplAnnotationParser::PARE_FUNCTION);
foreach ($class->getMethods() as $method) {
$annotations = $parser->parseAnnotations($method->getDocComment());
}
It decouples the implementation, and allows for people to polymorphically
substitute different parsers for different needs.
Thoughts?
Anthony