Doxygen — черты PHP

Мы полюбили Doxygen, он, безусловно, создает лучшую документацию.

Однако мы используем PHP, а черты просто игнорируются / отсутствуют в сгенерированной документации.

Мы пропускаем трюк здесь или черты просто не совместимы?

3

Решение

Черты не поддерживаются doxygen.

Поскольку PHP не поддерживает наследование от нескольких классов, черты являются способом расширения класса функциями нескольких «классов».

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 документирует это как множественное наследование. Может быть, это работает для вас.

Вы можете найти это и еще кое-что фильтры кислорода для PHP в моем репозитории на GitHub.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]