В настоящее время мы используем ApiGen документировать наши классы PHP. В наших комментариях к документам есть много встроенных @link
заявления как это:
{@link AbstractValidatableItem}
При запуске ApiGen оператор расширяется до такой ссылки (пожалуйста, игнорируйте href
):
\ NSLevel1 \ NSLevel2 \ NSLevel3 \ AbstractValidatableItem
Со многими встроенными ссылками это создает почти нечитаемый текст. Поэтому я хочу иметь ссылку только с простым именем класса, интерфейса или метода:
Есть ли способ сделать это с ApiGen без исправления? Я уже пробовала
{@link AbstractValidatableItem AbstractValidatableItem}
но это, кажется, нарушает разбор ссылки.
Это не мое предпочтительное решение, но мне удалось быстро исправить ApiGen, чтобы решить эту проблему для меня:
--- apigen/apigen/src/Templating/Filters/Helpers/ElementLinkFactory.php.orig Do Aug 13 14:51:13 2015
+++ apigen/apigen/src/Templating/Filters/Helpers/ElementLinkFactory.php Do Aug 13 14:51:33 2015
@@ -39,6 +39,7 @@ class ElementLinkFactory
$this->linkBuilder = $linkBuilder;
}
+ private $FULLY_QUALIFIED_NAMES=false;
/**
* @return string
@@ -75,7 +76,7 @@ class ElementLinkFactory
{
return $this->linkBuilder->build(
$this->elementUrlFactory->createForClass($reflectionClass),
- $reflectionClass->getName(),
+ $this->FULLY_QUALIFIED_NAMES ? $reflectionClass->getName() : $reflectionClass->getShortName(),
TRUE,
$classes
);
@@ -89,7 +90,7 @@ class ElementLinkFactory
{
return $this->linkBuilder->build(
$this->elementUrlFactory->createForMethod($reflectionMethod),
- $reflectionMethod->getDeclaringClassName() . '::' . $reflectionMethod->getName() . '()',
+ ( $this->FULLY_QUALIFIED_NAMES ? $reflectionMethod->getDeclaringClass()->getName() : $reflectionMethod->getDeclaringClass()->getShortName() ) . '::' . ( $this->FULLY_QUALIFIED_NAMES ? $reflectionMethod->getName() : $reflectionMethod->getShortName()) . '()',
FALSE,
$classes
);
Патч заставляет его использовать getShortName()
вместо getName()
на разрешенные занятия.
Других решений пока нет …