我们目前使用ApiGen来记录我们的PHP类。在我们的文档注释中,有很多内联@link
语句,如下所示:
{@link AbstractValidatableItem}
运行ApiGen时,语句会扩展为这样的链接(请忽略href
):
\NSLevel1\NSLevel2\NSLevel3\AbstractValidatableItem
使用许多内联链接,这会创建一个几乎不可读的文本。因此,我希望只有简单的类,接口或方法名称的链接:
有没有办法在没有打补丁的情况下用ApiGen做到这一点?我已经尝试了
{@link AbstractValidatableItem AbstractValidatableItem}
但这似乎打破了链接的解析。
答案 0 :(得分:0)
这不是我首选的解决方案,但我设法快速修补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()
。