2

現在、ApiGenを使用して PHP クラスを文書化しています。ドキュメント コメント内には、次の@linkようなインライン ステートメントが多数あります。

{@link AbstractValidatableItem}

ApiGen を実行すると、ステートメントは次のようなリンクに展開されます (無視してくださいhref)。

\NSLevel1\NSLevel2\NSLevel3\AbstractValidatableItem

多くのインライン リンクがあると、ほとんど判読できないテキストが作成されます。したがって、単純なクラス、インターフェース、またはメソッド名だけのリンクが必要です。

AbstractValidatableItem

パッチを適用せずに ApiGen でこれを行う方法はありますか? 私はすでに試しました

{@link AbstractValidatableItem AbstractValidatableItem}

しかし、これはリンクの解析を壊しているようです。

4

1 に答える 1

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()

于 2015-08-13T13:06:09.753 に答える