Basic usage
===========

.. warning::

   If you intend on using the phar distributed version, please read the following
   for some common phar issues:
   http://silex.sensiolabs.org/doc/usage.html#pitfalls.

You can use the ``phpdoc`` command to generate your documentation
for you.

In this document is shown how phpDocumentor can be used to generate your
documentation. It is expected that the phpdoc command is available; thus
whenever we ask you to run a command it would be in the following form::

    $ phpdoc

When you have installed a version via the installer you should invoke the
``phpdoc.php`` script in the ``bin`` folder of your phpDocumentor installation
unless you have added a symlink as described in the chapter :doc:`installation`.

Under Linux / MacOSX that would be::

    $ [PHPDOC_FOLDER]/bin/phpdoc.php

And under Windows that would be::

    $ [PHPDOC_FOLDER]\bin\phpdoc.bat

Introduction
------------

phpDocumentor takes a two-step approach to generating documentation:

1. Parse the source files and create an intermediate structure file (called
   structure.xml) containing all meta-data of your source code.
2. Transform the intermediate structure file to a form of human readable output,
   such as HTML.

These steps can be executed at once or separate, depending upon your preference.

Generating documentation
------------------------

To generate your documentation you can invoke phpDocumentor without specifying
a command::

    $ phpdoc

When ran without parameters (as shown above) it will try to get the location of
the source code and the target folder from a configuration file (which is
discussed in the :doc:`configuration` chapter) or exit with an error. You can
use the help option (``-h`` or ``--help``) to view a list of all possible options.

::

    $ phpdoc -h

The simplest action would be to invoke phpDocumentor to parse the given
location (``-d`` for a directory, ``-f`` for a file) and tell it to
output your documentation to the given target (``-t``) folder using
the following command::

    $ phpdoc -d [SOURCE_PATH] -t [TARGET_PATH]

Please be aware that phpDocumentor expects the target location either exists
or can be created with the current user. If it is not, the application will exit
and tell you so.

Commands
--------

Usage
~~~~~

phpDocumentor has a command oriented CLI; the first argument represents the name
of the command to execute, if no name is given then phpDocumentor assumes you want
to run the ``project:run`` command. This last mechanism provides backwards
compatibility with phpDocumentor 1.x.

Example::

    $ phpdoc -d . -t output

Would result in the ``project:run`` command being executed with parameter ``-d`` and
``-t``.

Another example::

    $ phpdoc run -d . -t output

would have the same effect as the previous command; if no 'namespace'
(thus _project:_) is provided then the namespace ``project`` is assumed.

Last example::

   $ phpdoc project:run -d . -t output

would have the same effect as the previous examples and is the most explicit
form.

Listing
~~~~~~~

All commands are described below with a link to their full description. Each
command has specific arguments. It is advised to either read the detailed
sub-section or invoke ``phpdoc <command> --help``; this will provide a summary of
the command and its arguments.

=============================== =================================================
Full name                       Description
=============================== =================================================
:doc:`/tasks/project_list`      Lists all commands that can be run by phpDocumentor.
:doc:`/tasks/project_run`       Parses and transform the given directory (-d|-f)
                                to the given location (-t).
:doc:`/tasks/project_parse`     Parses the given source code and creates an
                                :term:`Intermediate Structure File`.
:doc:`/tasks/project_transform` Transforms an existing
                                :term:`Intermediate Structure File` into the
                                specified output format.
:doc:`/tasks/plugin_generate`   Generates a skeleton plugin.
:doc:`/tasks/template_generate` Generates a skeleton template.
:doc:`/tasks/template_list`     Displays a listing of all available templates in
                                phpDocumentor.
=============================== =================================================
