我们越来越喜欢 Doxygen,它似乎创建了最好看的文档。
但是,我们使用 PHP,生成的文档中忽略/缺少 Traits。
我们是不是漏掉了一个技巧,还是 Traits 根本不兼容?
最佳答案
doxygen 不支持 Traits。
由于 PHP 不支持从多个类继承,traits 是通过多个“类”的功能扩展一个类的方式。
C++ 确实支持从多个类继承,所以试试这个过滤器:
// make traits to classes
$regexp = '#trait([\s]+[\S]+[\s]*){#';
$replace = 'class$1{';
$source = preg_replace($regexp, $replace, $source);
// use traits by extending them (classes that not extending a class)
$regexp = '#class([\s]+[\S]+[\s]*)(implements[\s]+[\S]+[\s]*)?{[\s]+use([^;]+);#';
$replace = 'class$1 extends $3 $2 {';
$source = preg_replace($regexp, $replace, $source);
// use traits by extending them (classes that already extending a class)
$regexp = '#class([\s]+[\S]+[\s]+extends[\s]+[\S]+[\s]*)(implements[\s]+[\S]+[\s]*){[\s]+use([^;]+);#';
$replace = 'class$1, $3 $2{';
$source = preg_replace($regexp, $replace, $source);
这个过滤器做:
将特征转换为类
trait MyTrait{ ... }
成为
class MyTrait{ ... }
将“使用”特征转化为“扩展”特征
class MyClass{ use MyTrait1, MyTrait2; ... }
成为
class MyClass extends MyTrait, MyTrait2{ ... }
Doxygen 将其记录为多重继承。也许这对你有用。
您可以找到这个和更多 doxygen filters for PHP in my repository on GitHub .
关于php - Doxygen - PHP 特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26585100/