我想构建一个注释解析算法,将phpdoc标签信息存储到数组中。
在示例中,这是注释(我已经清理掉它没有那个*):
@author some name
@example any example ...
more examples
@title project title
现在,我想解析该评论。我已经编写了一种将行存储到这样的数组中的方法:
$commentLines = array_filter(array_map('trim', $this->getLines($comment)));
所以现在我想解析该数组中的所有行($ commentLines)。如果一行中包含 @ ,则应该对其进行验证。如果为true,则@后面的单词(例如'author')应获得标签的名称。之后,如果下一行包含@,则应再次进行验证。如果为true,则应该将第一个@和最后一个@之间的所有值(不带标记名(作者))存储到数组中。
最后,数组应如下所示:
$values = [
'author' => [
'some name',
],
'example' => [
'any example ...',
'more examples',
],
],
因此,如果有另一端,则解析器应获取之间的字符串。如果没有@,则该行也属于同一数组(也许我们可以使用array_combine方法)