Welcome to phpdoc-to-rst’s documentation!

phpdoc-to-rst is a library that can generate reStructuredText based documentation to be build with sphinx from your PHPDoc annotated code. sphinxcontrib-phpdomain is used to annotate the PHP objects in the documentation.

Command line tool

API documentation can easily be generated with the shipped command line tool phpdoc-to-rst.

Usage:
  phpdoc-to-rst generate <target> [<src>]...

Arguments:
  target                Destination for the generated rst files
  src                   Source directories to parse

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  This command allows you to generate sphinx/rst based documentation from PHPDoc annotations.

Usage

You can either use the Command line tool or create your own PHP script if you want to have more control over the generated documentation.

use JuliusHaertl\PHPDocToRst\ApiDocBuilder;

$apiDocBuilder = new ApiDocBuilder(__DIR__ . '/src', __DIR__ . '/docs');
$apiDocBuilder->setVerboseOutput(true);
$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\InterfaceImplementors::class);
$apiDocBuilder->addExtension(\JuliusHaertl\PHPDocToRst\Extension\PublicOnlyExtension::class);
$apiDocBuilder->build();

For more details on extensions that can be used, please check the Extensions documentation.

Extensions

Available extensions

The following extensions are shipped with phpdoc-to-rst:

  • InterfaceImplementors
    Link a list of all classes that implement an interface.
  • PublicOnlyExtension
    Only show public methods/properties. Also anything tagged with @internal will be hidden.
  • TocExtension
    Add a list of methods to the beginning of each interface/class/trait

Building an extension

You can easily build your own extensions just by extending the Extension class.

PHPDocToRst

\JuliusHaertl\PHPDocToRst

Namespaces

Builder

\JuliusHaertl\PHPDocToRst\Builder

Classes
MainIndexBuilder
class JuliusHaertl\PHPDocToRst\Builder\MainIndexBuilder
This class builds a list of all available namespaces in the project.
Source:src/Builder/MainIndexBuilder.php#35
Parent:JuliusHaertl\PHPDocToRst\Builder\RstBuilder
Properties
Methods
public JuliusHaertl\PHPDocToRst\Builder\MainIndexBuilder::__construct($namespaces)
Source:src/Builder/MainIndexBuilder.php#40
public JuliusHaertl\PHPDocToRst\Builder\MainIndexBuilder::render()
Source:src/Builder/MainIndexBuilder.php#44
PhpDomainBuilder
class JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder
Class to build reStructuredText file with sphinxcontrib-phpdomain syntax
Source:src/Builder/PhpDomainBuilder.php#49
Parent:JuliusHaertl\PHPDocToRst\Builder\RstBuilder
Used traits:JuliusHaertl\PHPDocToRst\Builder\ExtensionBuilder
Constants
SECTION_BEFORE_DESCRIPTION = self::class . ::SECTION_BEFORE_DESCRIPTION
Source:src/Builder/PhpDomainBuilder.php#51
SECTION_AFTER_DESCRIPTION = self::class . ::SECTION_AFTER_DESCRIPTION
Source:src/Builder/PhpDomainBuilder.php#52
SECTION_AFTER_TITLE = self::class . ::SECTION_AFTER_TITLE
Source:src/Builder/PhpDomainBuilder.php#53
SECTION_AFTER_INTRODUCTION = self::class . ::SECTION_AFTER_INTRODUCTION
Source:src/Builder/PhpDomainBuilder.php#54
Methods
public JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::__construct($extensions)
Source:src/Builder/PhpDomainBuilder.php#60
public static JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::getNamespace(phpDocumentor\Reflection\Element $element)
Strip element name from Fqsen to return the namespace only
Source:

src/Builder/PhpDomainBuilder.php#72

Parameters:
  • $element (phpDocumentor\Reflection\Element)
Returns:

mixed

protected JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addPageHeader(phpDocumentor\Reflection\Element $element)
Add namespace
Source:

src/Builder/PhpDomainBuilder.php#81

Parameters:
  • $element (phpDocumentor\Reflection\Element)
protected JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addAfterIntroduction($element)
Source:src/Builder/PhpDomainBuilder.php#118
protected JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addConstants($constants)
Source:src/Builder/PhpDomainBuilder.php#123
protected JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addProperties($properties)
Source:

src/Builder/PhpDomainBuilder.php#152

Parameters:
  • $properties (phpDocumentor\Reflection\Php\Property[])
protected JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addParent($element)
Source:

src/Builder/PhpDomainBuilder.php#182

Parameters:
  • $element (phpDocumentor\Reflection\Php\Interface_ | \phpDocumentor\Reflection\Php\Class_)
protected JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addUsedTraits($element)
Source:

src/Builder/PhpDomainBuilder.php#200

Parameters:
  • $element (phpDocumentor\Reflection\Php\Class_ | \phpDocumentor\Reflection\Php\Trait_)
protected JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addMethods($methods)
Source:

src/Builder/PhpDomainBuilder.php#213

Parameters:
  • $methods
Source:

src/Builder/PhpDomainBuilder.php#309

Parameters:
  • $type string
  • $fqsen string
Returns:

string

public JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::beginPhpDomain($type, $name, $indent=true)
Source:

src/Builder/PhpDomainBuilder.php#321

Parameters:
  • $type string
  • $name string
  • $indent bool Should indent after the section started
public JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::endPhpDomain($type="")
Source:

src/Builder/PhpDomainBuilder.php#333

Parameters:
  • $type (string)
Returns:

$this

public JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addDocBlockDescription($element)
Source:

src/Builder/PhpDomainBuilder.php#342

Parameters:
  • $element (phpDocumentor\Reflection\Php\Class_ | \phpDocumentor\Reflection\Php\Interface_ | \phpDocumentor\Reflection\Php\Trait_ | \phpDocumentor\Reflection\Php\Property | \phpDocumentor\Reflection\Php\Method | \phpDocumentor\Reflection\Php\Constant)
Returns:

$this

protected JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::addDocblockTag($tagName, phpDocumentor\Reflection\DocBlock $docBlock)
Source:

src/Builder/PhpDomainBuilder.php#365

Parameters:
  • $tagName (string) Name of the tag to parse
  • $docBlock (phpDocumentor\Reflection\DocBlock)
public static JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::typesToRst($typesString)
Source:

src/Builder/PhpDomainBuilder.php#425

Parameters:
  • $typesString (string)
Returns:

bool | string

public JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder::shouldRenderElement(phpDocumentor\Reflection\Element $element)
Source:

src/Builder/PhpDomainBuilder.php#451

Parameters:
  • $element (phpDocumentor\Reflection\Element)
Returns:

bool

RstBuilder
class JuliusHaertl\PHPDocToRst\Builder\RstBuilder
Helper class to build reStructuredText files
Source:src/Builder/RstBuilder.php#34
Properties
protected static property JuliusHaertl\PHPDocToRst\Builder\RstBuilder::$content
Source:src/Builder/RstBuilder.php#38
Type:string
Methods
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::getContent()
Source:src/Builder/RstBuilder.php#40
public static JuliusHaertl\PHPDocToRst\Builder\RstBuilder::escape($text)
Source:src/Builder/RstBuilder.php#44
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::indent()
Source:src/Builder/RstBuilder.php#50
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::unindent()
Source:src/Builder/RstBuilder.php#55
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::addFieldList($key, $value)
Source:src/Builder/RstBuilder.php#61
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::addH1(string $text)
Source:

src/Builder/RstBuilder.php#71

Parameters:
  • $text (string)
Returns:

$this

public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::addH2($text)
Source:src/Builder/RstBuilder.php#77
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::addH3($text)
Source:src/Builder/RstBuilder.php#83
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::addLine($text="")
Source:src/Builder/RstBuilder.php#89
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::addMultiline($text="", $blockIndent=false)
Source:src/Builder/RstBuilder.php#94
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::addMultilineWithoutRendering($text)
Source:src/Builder/RstBuilder.php#109
public JuliusHaertl\PHPDocToRst\Builder\RstBuilder::add($text)
Source:src/Builder/RstBuilder.php#118
FileBuilder
class JuliusHaertl\PHPDocToRst\Builder\FileBuilder
Abstract building class to build sphinxcontrib-phpdomain from a php file
Source:src/Builder/FileBuilder.php#35
Parent:JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder
Properties
protected static property JuliusHaertl\PHPDocToRst\Builder\FileBuilder::$file
Source:src/Builder/FileBuilder.php#38
Type:\phpDocumentor\Reflection\Php\File
protected static property JuliusHaertl\PHPDocToRst\Builder\FileBuilder::$element
Source:src/Builder/FileBuilder.php#41
Type:\phpDocumentor\Reflection\Element
protected static property JuliusHaertl\PHPDocToRst\Builder\FileBuilder::$extensions
Source:src/Builder/FileBuilder.php#44
Type:\JuliusHaertl\PHPDocToRst\Extension\Extension[]
Methods
protected abstract JuliusHaertl\PHPDocToRst\Builder\FileBuilder::render()
Source:src/Builder/FileBuilder.php#46
public JuliusHaertl\PHPDocToRst\Builder\FileBuilder::__construct($file, $element, $extensions)
Source:src/Builder/FileBuilder.php#48
public JuliusHaertl\PHPDocToRst\Builder\FileBuilder::getElement()
Source:src/Builder/FileBuilder.php#58
Returns:\phpDocumentor\Reflection\Element that is used to build the rst file
public JuliusHaertl\PHPDocToRst\Builder\FileBuilder::getFile()
Source:src/Builder/FileBuilder.php#65
Returns:\phpDocumentor\Reflection\Php\File
ClassFileBuilder
class JuliusHaertl\PHPDocToRst\Builder\ClassFileBuilder
Source:src/Builder/ClassFileBuilder.php#30
Parent:JuliusHaertl\PHPDocToRst\Builder\FileBuilder
Methods
protected JuliusHaertl\PHPDocToRst\Builder\ClassFileBuilder::render()
Source:src/Builder/ClassFileBuilder.php#32
protected JuliusHaertl\PHPDocToRst\Builder\ClassFileBuilder::addImplementedInterfaces($element)
Source:

src/Builder/ClassFileBuilder.php#60

Parameters:
  • $element (phpDocumentor\Reflection\Php\Class_)
InterfaceFileBuilder
class JuliusHaertl\PHPDocToRst\Builder\InterfaceFileBuilder
Source:src/Builder/InterfaceFileBuilder.php#30
Parent:JuliusHaertl\PHPDocToRst\Builder\FileBuilder
Summary
Methods
protected JuliusHaertl\PHPDocToRst\Builder\InterfaceFileBuilder::render()
Source:src/Builder/InterfaceFileBuilder.php#32
TraitFileBuilder
class JuliusHaertl\PHPDocToRst\Builder\TraitFileBuilder
Source:src/Builder/TraitFileBuilder.php#31
Parent:JuliusHaertl\PHPDocToRst\Builder\FileBuilder
Summary
Methods
protected JuliusHaertl\PHPDocToRst\Builder\TraitFileBuilder::render()
Source:src/Builder/TraitFileBuilder.php#33
NamespaceIndexBuilder
class JuliusHaertl\PHPDocToRst\Builder\NamespaceIndexBuilder
This class will build an index for each namespace.
It contains a toc for child namespaces, classes, traits, interfaces and functions
Source:src/Builder/NamespaceIndexBuilder.php#40
Parent:JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder
Summary
Methods
Constants
RENDER_INDEX_NAMESPACE = 0
Source:src/Builder/NamespaceIndexBuilder.php#42
RENDER_INDEX_CLASSES = 1
Source:src/Builder/NamespaceIndexBuilder.php#43
RENDER_INDEX_TRAITS = 2
Source:src/Builder/NamespaceIndexBuilder.php#44
RENDER_INDEX_INTERFACES = 3
Source:src/Builder/NamespaceIndexBuilder.php#45
RENDER_INDEX_FUNCTIONS = 4
Source:src/Builder/NamespaceIndexBuilder.php#46
RENDER_INDEX_CONSTANTS = 5
Source:src/Builder/NamespaceIndexBuilder.php#47
Properties
Methods
public JuliusHaertl\PHPDocToRst\Builder\NamespaceIndexBuilder::__construct($extensions, $namespaces, phpDocumentor\Reflection\Php\Namespace_ $current, $functions, $constants)
Source:src/Builder/NamespaceIndexBuilder.php#64
public JuliusHaertl\PHPDocToRst\Builder\NamespaceIndexBuilder::render()
Source:src/Builder/NamespaceIndexBuilder.php#94
protected JuliusHaertl\PHPDocToRst\Builder\NamespaceIndexBuilder::addIndex($type)
Source:src/Builder/NamespaceIndexBuilder.php#119
Traits
ExtensionBuilder
trait JuliusHaertl\PHPDocToRst\Builder\ExtensionBuilder
Source:src/Builder/ExtensionBuilder.php#13
Properties
protected static property JuliusHaertl\PHPDocToRst\Builder\ExtensionBuilder::$extensions
Source:src/Builder/ExtensionBuilder.php#16
Type:\JuliusHaertl\PHPDocToRst\Extension\Extension[]
Methods
public JuliusHaertl\PHPDocToRst\Builder\ExtensionBuilder::__construct($extensions)
Source:src/Builder/ExtensionBuilder.php#18
protected JuliusHaertl\PHPDocToRst\Builder\ExtensionBuilder::callExtensions($type, $element)
Source:src/Builder/ExtensionBuilder.php#22

Extension

\JuliusHaertl\PHPDocToRst\Extension

Classes
GithubLocationExtension
class JuliusHaertl\PHPDocToRst\Extension\GithubLocationExtension
This extension adds a link to the source at github to all elements
Arguments
0 => Url to the github repo (required)
1 => Path to the git repository (required)
2 => Branch to link to (default=master)
Source:src/Extension/GithubLocationExtension.php#40
Parent:JuliusHaertl\PHPDocToRst\Extension\Extension
Summary
Methods
Properties
protected static property JuliusHaertl\PHPDocToRst\Extension\GithubLocationExtension::$basePath
Source:src/Extension/GithubLocationExtension.php#42
protected static property JuliusHaertl\PHPDocToRst\Extension\GithubLocationExtension::$githubRepo
Source:src/Extension/GithubLocationExtension.php#43
protected static property JuliusHaertl\PHPDocToRst\Extension\GithubLocationExtension::$branch
Source:src/Extension/GithubLocationExtension.php#44
Methods
public JuliusHaertl\PHPDocToRst\Extension\GithubLocationExtension::prepare()
Source:src/Extension/GithubLocationExtension.php#46
public JuliusHaertl\PHPDocToRst\Extension\GithubLocationExtension::render($type, &$builder, $element)
Source:

src/Extension/GithubLocationExtension.php#62

Parameters:
AddFullElementNameExtension
class JuliusHaertl\PHPDocToRst\Extension\AddFullElementNameExtension
Add the fully qualified element name including the namespace to each page
Source:src/Extension/AddFullElementNameExtension.php#39
Parent:JuliusHaertl\PHPDocToRst\Extension\Extension
Methods
public JuliusHaertl\PHPDocToRst\Extension\AddFullElementNameExtension::render($type, &$builder, $element)
Source:

src/Extension/AddFullElementNameExtension.php#45

Parameters:
TocExtension
class JuliusHaertl\PHPDocToRst\Extension\TocExtension
This extension will render a list of methods for easy access
at the beginning of classes, interfaces and traits
Source:src/Extension/TocExtension.php#40
Parent:JuliusHaertl\PHPDocToRst\Extension\Extension
Methods
public JuliusHaertl\PHPDocToRst\Extension\TocExtension::render($type, &$builder, $element)
Source:

src/Extension/TocExtension.php#46

Parameters:
NoPrivateExtension
class JuliusHaertl\PHPDocToRst\Extension\NoPrivateExtension
Do not render classes marked with phpDoc internal tag
Do only render public methods/properties
Source:src/Extension/NoPrivateExtension.php#38
Parent:JuliusHaertl\PHPDocToRst\Extension\Extension
Methods
public JuliusHaertl\PHPDocToRst\Extension\NoPrivateExtension::shouldRenderElement(phpDocumentor\Reflection\Element $element)
Source:src/Extension/NoPrivateExtension.php#40
InterfaceImplementors
class JuliusHaertl\PHPDocToRst\Extension\InterfaceImplementors
Class InterfaceImplementors
Source:src/Extension/InterfaceImplementors.php#41
Parent:JuliusHaertl\PHPDocToRst\Extension\Extension
Properties
Methods
public JuliusHaertl\PHPDocToRst\Extension\InterfaceImplementors::prepare()
Source:src/Extension/InterfaceImplementors.php#45
public JuliusHaertl\PHPDocToRst\Extension\InterfaceImplementors::render($type, &$builder, $element)
Source:

src/Extension/InterfaceImplementors.php#63

Parameters:
HideChildNamespaces
class JuliusHaertl\PHPDocToRst\Extension\HideChildNamespaces
Example for hiding a section in the namespace index page
Source:src/Extension/HideChildNamespaces.php#32
Parent:JuliusHaertl\PHPDocToRst\Extension\Extension
Methods
public JuliusHaertl\PHPDocToRst\Extension\HideChildNamespaces::shouldRenderIndex($type, $element)
Source:src/Extension/HideChildNamespaces.php#34
PublicOnlyExtension
class JuliusHaertl\PHPDocToRst\Extension\PublicOnlyExtension
Do not render classes marked with phpDoc internal tag
Do only render public methods/properties
Source:src/Extension/PublicOnlyExtension.php#38
Parent:JuliusHaertl\PHPDocToRst\Extension\Extension
Methods
public JuliusHaertl\PHPDocToRst\Extension\PublicOnlyExtension::shouldRenderElement(phpDocumentor\Reflection\Element $element)
Source:src/Extension/PublicOnlyExtension.php#40
Extension
class JuliusHaertl\PHPDocToRst\Extension\Extension
Source:src/Extension/Extension.php#32
Properties
protected static property JuliusHaertl\PHPDocToRst\Extension\Extension::$project
Source:src/Extension/Extension.php#35
Type:\phpDocumentor\Reflection\Php\Project
protected static property JuliusHaertl\PHPDocToRst\Extension\Extension::$arguments
Source:src/Extension/Extension.php#38
Type:array
Methods
public JuliusHaertl\PHPDocToRst\Extension\Extension::__construct(phpDocumentor\Reflection\Php\Project $project, $arguments=[])
Source:src/Extension/Extension.php#40
public JuliusHaertl\PHPDocToRst\Extension\Extension::prepare()
Method that will be ran before generating any documentation files
This is useful for preparing own data structures
to be used in the output documentation
Source:src/Extension/Extension.php#50
public JuliusHaertl\PHPDocToRst\Extension\Extension::render($type, &$builder, $element)
Implement custom rendering functionality here.
It will be executed by Builder classes depending on the given type.

Currently supported types:

- PhpDomainBuilder::SECTION_BEFORE_DESCRIPTION
- PhpDomainBuilder::SECTION_AFTER_DESCRIPTION
Source:

src/Extension/Extension.php#67

Parameters:
public JuliusHaertl\PHPDocToRst\Extension\Extension::shouldRenderElement(phpDocumentor\Reflection\Element $element)
This method will be called to check if a certain element should
be rendered in the documentation.
An example extension that makes use of it is PublicOnlyExtension
Source:

src/Extension/Extension.php#80

Parameters:
  • $element (phpDocumentor\Reflection\Element)
Returns:

bool

public JuliusHaertl\PHPDocToRst\Extension\Extension::shouldRenderIndex($type, $element)
Source:src/Extension/Extension.php#84

Middleware

\JuliusHaertl\PHPDocToRst\Middleware

Classes

Classes

WriteException

class JuliusHaertl\PHPDocToRst\WriteException
An exception for writing failure of files/directories in the build process
Source:src/WriteException.php#29
Parent:Exception
Summary

GenerateDocumentationCommand

class JuliusHaertl\PHPDocToRst\GenerateDocumentationCommand
Class GenerateDocumentationCommand
Source:src/GenerateDocumentationCommand.php#42
Parent:Symfony\Component\Console\Command\Command
Methods
protected JuliusHaertl\PHPDocToRst\GenerateDocumentationCommand::configure()
Source:src/GenerateDocumentationCommand.php#44
protected JuliusHaertl\PHPDocToRst\GenerateDocumentationCommand::execute(Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output)
Source:src/GenerateDocumentationCommand.php#62

Indices and tables