Особенности Doxygen - PHP


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

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

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

Author: Gavin, 2014-10-27

1 answers

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

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

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

 4
Author: AbcAeffchen, 2015-03-24 11:22:41