php - Doxygen - PHP 特性

标签 php doxygen traits

我们越来越喜欢 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);

这个过滤器做:

  1. 将特征转换为类

    trait MyTrait{ ... }
    

    成为

    class MyTrait{ ... }
    
  2. 将“使用”特征转化为“扩展”特征

    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/

相关文章:

c# - 从 RSA 公钥中提取数据

Doxygen - 在 gswin64c.exe 中使用 doxygen

Doxygen 不读取用宏保护的代码

struct - 实现 Rust 特征会导致找不到结构

php - 数据库表单中的多个复选框

php - 上传图片的更好方法?

generics - 如何在特征边界中指定 `std::ops::Mul` 的预期结果?

scala - 如何在 scala 的泛型方法中创建特征的实例?

php - 从列表元素运行 php

doxygen - 如果我使用 DOT 和 doxygen,如何更改由 graphviz 创建的图表在 HTML 中的位置?