我开始使用Doxygen来记录我的PHP代码。请参阅以下示例:
namespace \MyClasses;
class Order {
/**
* Some Description
*
* @var \MyClasses\Customer $customer
*/
protected $customer;
}
@var
命令将MyClasses Customer MyClasses\Order::$customer
呈现为类型而不是\MyClasses\Customer MyClasses\Order::$customer
,这将是正确的,使命名空间保持不变。有没有办法实现这个目标?放两个反斜杠\\MyClasses\\Customer
也不起作用。
@param
似乎与命名空间一起使用。
我使用的是最新版本1.8.13。配置几乎是默认的。
答案 0 :(得分:1)
如果有人仍然遇到这个问题,就会在doxygen的支持下“解决”。这是Bugzilla bug_795953(现在位于:https://github.com/doxygen/doxygen/issues/5553)。
所有你需要做的(在PHP文件中)是为doxygen创建/定制INPUT_FILTER并包含这段代码:
<?php
// Input
$source = file_get_contents($argv[1]);
// removes preceding '\' or '::' for the use of namespaces.
$regexp = '/ \\\\/';
$replace = ' ';
$source = preg_replace($regexp, $replace, $source);
// adds possibility to use '\' for namespaces
$regexp = '/\\\\/';
$replace = '::';
$source = preg_replace($regexp, $replace, $source);
// Output
echo $source;
?>
如果您使用以'@'开头的所有文档“命令”(@ var,@ param等),则此方法有效。如果你不这样做,你必须对regexp进行一些调整,并让它像这样工作。
doxygen无法识别命名空间的原因是因为'\'键被设置为doxygen的命令,所以它不能用于代码中的任何其他内容。因此,将所有'\'更改为'::'将使其理解这是命名空间引用。