Sphpdox
PHPDoc to Sphinx phpdomain
Writing ReStructuredText documentation for your PHP project? Already have well
documented PHP code using docblocks? Use this to generate API documentation
compatible with Sphinx's sphinxcontrib-phpdomain., (*1)
The name is a mixture of 'sphinx' and 'phpdoc'., (*2)
Installing
Compatible with PSR-0. The vendor namespace is Sphpdox., (*3)
composer
Sphpdox is available on Packagist as sphpdox/sphpdox
., (*4)
{
...
"require": {
"sphpdox/sphpdox": "dev-master"
}
}
What It Does
Sphpdox reads a directory of your namespaced source code. It finds documented
classes, methods, properties, etc. and produces documentation in ReStructuredText
format, using the phpdomain
available as part of sphinxcontrib
. It takes a
library like this:, (*5)
lib
โโโ SplClassLoader.php
โโโ Wrench
โโโ Application
โย ย โโโ Application.php
โย ย โโโ EchoApplication.php
โโโ BasicServer.php
โโโ Client.php
โโโ ConnectionManager.php
โโโ Connection.php
โโโ Frame
โย ย โโโ Frame.php
โย ย โโโ HybiFrame.php
โโโ Listener
โย ย โโโ HandshakeRequestListener.php
โย ย โโโ Listener.php
โย ย โโโ OriginPolicy.php
โย ย โโโ RateLimiter.php
โโโ Payload
โย ย โโโ HybiPayload.php
โย ย โโโ Payload.php
โโโ Protocol
โย ย โโโ Hybi10Protocol.php
โย ย โโโ HybiProtocol.php
โย ย โโโ Protocol.php
โย ย โโโ Rfc6455Protocol.php
โโโ Resource.php
โโโ Server.php
โโโ Socket
โย ย โโโ ClientSocket.php
โย ย โโโ ServerClientSocket.php
โย ย โโโ ServerSocket.php
โย ย โโโ Socket.php
โย ย โโโ UriSocket.php
โโโ Util
โโโ Configurable.php
โโโ Ssl.php
And turns it into a documentation tree, like this:, (*6)
build/Wrench/
โโโ Application
โย ย โโโ Application.rst
โย ย โโโ EchoApplication.rst
โย ย โโโ index.rst
โโโ BasicServer.rst
โโโ Client.rst
โโโ ConnectionManager.rst
โโโ Connection.rst
โโโ Frame
โย ย โโโ Frame.rst
โย ย โโโ HybiFrame.rst
โย ย โโโ index.rst
โโโ index.rst
โโโ Listener
โย ย โโโ HandshakeRequestListener.rst
โย ย โโโ index.rst
โย ย โโโ Listener.rst
โย ย โโโ OriginPolicy.rst
โย ย โโโ RateLimiter.rst
โโโ Payload
โย ย โโโ HybiPayload.rst
โย ย โโโ index.rst
โย ย โโโ Payload.rst
โโโ Protocol
โย ย โโโ Hybi10Protocol.rst
โย ย โโโ HybiProtocol.rst
โย ย โโโ index.rst
โย ย โโโ Protocol.rst
โย ย โโโ Rfc6455Protocol.rst
โโโ Resource.rst
โโโ Server.rst
โโโ Socket
โย ย โโโ ClientSocket.rst
โย ย โโโ index.rst
โย ย โโโ ServerClientSocket.rst
โย ย โโโ ServerSocket.rst
โย ย โโโ Socket.rst
โย ย โโโ UriSocket.rst
โโโ Util
โโโ Configurable.rst
โโโ index.rst
โโโ Ssl.rst
Where each file contains documentation for a class, like this:, (*7)
.. php:class:: DateTime
Datetime class
.. php:method:: setDate($year, $month, $day)
Set the date.
:param int $year: The year.
:param int $month: The month.
:param int $day: The day.
:returns: Either false on failure, or the datetime object for method chaining.
.. php:method:: setTime($hour, $minute[, $second])
Set the time.
:param int $hour: The hour
:param int $minute: The minute
:param int $second: The second
:returns: Either false on failure, or the datetime object for method chaining.
.. php:const:: ATOM
Y-m-d\TH:i:sP
Usage
./sphpdox.php help
for help. The main command is process
. If you don't
supply any arguments, you'll be asked interactively., (*8)
Here's the built-in help for the process
command:, (*9)
$./sphpdox.php help process
Usage:
process [-o|--output="..."] [-t|--title="..."] [-x|--exclude="..."] namespace path
Arguments:
namespace The namespace to process
path The path the namespace can be found in
Options:
--output (-o) The path to output the ReST files (default: build)
--title (-t) An alternate title for the top level namespace
--exclude (-x) Semicolon separated namespaces to ignore
Help:
The process command works recursively on a directory of PHP code.
Libraries
Sphpdox uses the Symfony Console component, and PHP-Token-Reflection. I
strongly recommend you use composer to install sphpdox, to avoid hunting down
dependencies., (*10)
License
sphpdox is released under GPL-3.0+, (*11)