aka Peej's Quick & Dirty PHPDoc Clone
PHPDoctor is a Javadoc style comment parser for PHP, written with an emphasis on
speed and simplicity. It is designed to be as close a clone to Javadoc as possible., (*1)
Installation
You can clone it from Github but you're better off using Composer
to install it within your project:, (*2)
{
require: "peej/phpdoctor": "2.0.5"
}
Then run Composer:, (*3)
$ curl -s https://getcomposer.org/installer | php
$ composer.phar install
And then if everything went according to plan, run PHPDoctor with it's default
configuration:, (*4)
$ bin/phpdoc
Configuration
PHPDoctor will run with default options that will process all *.php files within
and below the current directory, unless you provide a configuration file., (*5)
Configuration is done via a PHP style ini file. If there's a file called
phpdoctor.ini in the current directory, PHPDoctor will use this, alternatively
you can pass in the name of a configuration as the first commandline option., (*6)
PHPDoctor supports a number of configuration directives:, (*7)
- files - Names of files to parse. This can be a single filename, or a
comma separated list of filenames. Wildcards are allowed.
- ignore - Names of files or directories to ignore. This can be a single
filename, or a comma separated list of filenames. Wildcards are NOT
allowed.
- source_path - The directory to look for files in, if not used the
PHPDoctor will look in the current directory (the directory it
is run from).
- subdirs - If you do not want PHPDoctor to look in each sub directory
for files uncomment this line.
- quiet - Quiet mode suppresses all output other than warnings and
errors.
- verbose - Verbose mode outputs additional messages during execution.
- doclet - Select the doclet to use for generating output.
- doclet_path - The directory to find the doclet in. Doclets are
expected to be in a directory named after themselves at the
location given.
- taglet_path - The directory to find taglets in. Taglets allow you to
make PHPDoctor handle new tags and to alter the behavour of
existing tags and their output.
- default_package - If the code you are parsing does not use package
tags or not all elements have package tags, use this setting to
place unbound elements into a particular package.
- overview - Specifies the name of a HTML file containing text for the
overview documentation to be placed on the overview page. The
path is relative to "source_path" unless an absolute path is
given.
- package_comment_dir - Package comments will be looked for in a file
named package.html in the same directory as the first source
file parsed in that package or in the directory given below. If
the directive below is used then package comments should be
named ".html".
- globals - Parse out global variables.
- constants - Parse out global constants.
- private - Generate documentation for all class members.
- protected - Generate documentation for public and protected class
members.
-
public - Generate documentation for only public class members., (*8)
The following directives are specific for the standard doclet:, (*9)
-
d - The directory to place generated documentation in. If the given
path is relative to it will be relative to "source_path"., (*10)
- windowtitle - Specifies the title to be placed in the HTML
tag.
- doctitle - Specifies the title to be placed near the top of the
overview summary file.
- header - Specifies the header text to be placed at the top of each
output file. The header will be placed to the right of the
upper navigation bar.
- footer - Specifies the footer text to be placed at the bottom of each
output file. The footer will be placed to the right of the
lower navigation bar.
- bottom - Specifies the text to be placed at the bottom of each output
file. The text will be placed at the bottom of the page, below
the lower navigation bar.
- tree - Create a class tree
A full description of the format of doc comments can be found on the
Sun Javadoc web site (http://java.sun.com/j2se/javadoc/). Doc comments
look like this:, (*11)
/**
* This is the typical format of a simple documentation comment
* that spans two lines.
*/
PHPDoctor supports the following tags within a doc comment:, (*12)
@author name-text
@deprecated deprecated-text
{@link package.class#member label}
{@linkplain package.class#member label}
@param parameter-type parameter-name description
@return return-type description
@see packahge.class#member
@since since-text
@var var-type
@version version-text
Some Javadoc tags are not relevant to PHP, others are added or slightly changed
due to PHPs loose typing., (*13)
Questions
Q: Why do we need another PHPDdoc clone?, (*14)
A: I wrote PHPDoctor because I back in 2004, I couldn't find a Javadoc clone for
PHP that was small and simple and worked out of the box or that worked at all.
The PHP tokenizer extension has made creating PHPDoc programs really easy since
PHP can now do the hard work for you., (*15)
Q: Why is PHPDoctor different from other PHPDoc programs?, (*16)
A: PHPDoctor is very small and easy to use, sticking as closely as
possible to the way Javadoc works, including using the same program
structure and doclet approach to templating. PHPDoctor has a very small
learning curve, most people should be able to generate API
documentation in only a few minutes., (*17)
Q: Tell me more about how PHPDoctor works, (*18)
A: PHPDoctor uses the PHP tokenizer extension, this means that it lets PHP do the
parsing of your source code. PHPDoctor just takes the tokens PHP parses out and
turns them into API documentation via doclet clases. This means it will work for
any valid PHP code, no exceptions, it also makes it very fast., (*19)