Reflection_Annotation in CVS Sebastian Bergmann

My Proposal for ””Reflection_Annotation”” has been accepted and I committed an initial development version to the PEAR CVS Repository.

ProposalにあったReflection_Annotationが6票で通りました。
CVSに上げ始めたらしいので気になっていたParser部分を見てみました。

class Reflection_Annotation_Parser {
    public static function parseAnnotations($docComment) {
        $annotations = array();

        $lines = explode("\n", $docComment);

        foreach ($lines as $line) {
            $nameStart = strpos($line, '@');

            if ($nameStart !== FALSE) {
                $nameEnd = strpos($line, '(', $nameStart);

                if ($nameEnd !== FALSE) {
                    $name = substr($line, $nameStart + 1, $nameEnd - $nameStart - 1);
                }

                $argumentsEnd = strpos($line, ')', $nameEnd);

                if ($argumentsEnd !== FALSE) {
                    $arguments = substr($line, $nameEnd + 1, $argumentsEnd - ($nameEnd + 1));

                    $annotations[$name] = $arguments;
                }
            }
        }

        return $annotations;
    }
}

なるほど、Parserと聞いただけで拒絶反応示してしまいたが、コメント部分をパースするだけならこんな感じなんですね。
Reflection_Annotationに親近感が沸きました。

ref: PHPにアノテーション

Comments


Option