Мы полюбили Doxygen, он, безусловно, создает лучшую документацию.
Однако мы используем PHP, а черты просто игнорируются / отсутствуют в сгенерированной документации.
Мы пропускаем трюк здесь или черты просто не совместимы?
Черты не поддерживаются 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);
Этот фильтр делает:
Преобразует черты в классы
trait MyTrait{ ... }
становится
class MyTrait{ ... }
Преобразуйте «использующие» черты в «расширяющие» черты
class MyClass{
use MyTrait1, MyTrait2;
...
}
становится
class MyClass extends MyTrait, MyTrait2{
...
}
Doxygen документирует это как множественное наследование. Может быть, это работает для вас.
Вы можете найти это и еще кое-что фильтры кислорода для PHP в моем репозитории на GitHub.
Других решений пока нет …