gpt4 book ai didi

php - 将 PHP Doc 注释解析为数据结构

转载 作者:IT王子 更新时间:2023-10-29 01:23:43 32 4
gpt4 key购买 nike

我在 PHP 中使用反射 API 从方法中提取 DocComment (PHPDoc) 字符串

$r = new ReflectionMethod($object);
$comment = $r->getDocComment();

这将返回一个看起来像这样的字符串(取决于方法的记录情况)

/**
* Does this great things
*
* @param string $thing
* @return Some_Great_Thing
*/

是否有可以将 PHP Doc Comment String 解析为数据结构的内置方法或函数?

$object = some_magic_function_or_method($comment_string);

echo 'Returns a: ', $object->return;

缺少那个,PHPDoc source code 的哪一部分我应该自己看一下吗?

缺少和/或除此之外,是否有第三方代码被认为比 PHPDoc 代码“更好”?

我意识到解析这些字符串不是火箭科学,甚至不是计算机科学,但我更喜欢一个经过良好测试的库/例程/方法,该库/例程/方法旨在处理许多 janky、半不正确的 PHP可能存在于野外的文档代码。

最佳答案

我很惊讶这还没有被提及:使用 Zend Framework 的 Zend_Reflection 怎么样?这可能会派上用场,尤其是当您使用基于 Zend Framework 构建的软件(如 Magento)时。

参见 Zend Framework Manual对于一些代码示例和 API Documentation可用的方法。

有不同的方法可以做到这一点:

  • 将文件名传递给 Zend_Reflection_File。
  • 将对象传递给 Zend_Reflection_Class。
  • 将一个对象和一个方法名传递给 Zend_Reflection_Method。
  • 如果手头真的只有注释字符串,您甚至可以将代码拼凑成一个小的虚拟类,将其保存到一个临时文件并将该文件传递给 Zend_Reflection_File。

让我们来看一个简单的案例,假设您有一个要检查的现有类。

代码大概是这样的(未经测试,请见谅):

$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();
}

关于php - 将 PHP Doc 注释解析为数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702356/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com