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