Doxygen-PHP特性

Gav*_*vin 3 php doxygen traits

我们已经对Doxygen产生了浓厚的兴趣,它显然可以创建外观最好的文档。

但是,我们使用PHP,并且在生成的文档中只是忽略/不存在Traits。

我们在这里错过了一个把戏吗,还是特质根本不兼容?

Abc*_*hen 5

性状只是不受氧的支持。

由于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);
Run Code Online (Sandbox Code Playgroud)

该过滤器可以:

  1. 将特质转换为类

    trait MyTrait{ ... }
    
    Run Code Online (Sandbox Code Playgroud)

    变成

    class MyTrait{ ... }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将“使用”特征转换为“扩展”特征

    class MyClass{
        use MyTrait1, MyTrait2;
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

    变成

    class MyClass extends MyTrait, MyTrait2{
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

Doxygen将其记录为多重继承。也许这对你有用。

您可以在我在GitHub上的存储库中找到这个以及更多用于PHP的doxygen过滤器