Yahav and all,

On Sun, Jan 6, 2013 at 4:58 PM, Yahav Gindi Bar <g.b.ya...@gmail.com> 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

Reply via email to