| phpDocumentor |
| [ class tree: phpDocumentor ] [ index: phpDocumentor ] [ all elements ] |
|
Packages: tests PhpDocumentor HTML_TreeMenu phpDocumentor Converters apidoc Pdf-php Smarty PEAR Tutorials/Manuals: Package-level:
Classes.inc
common.inc.php create_examples.php EventStack.inc IntermediateParser.inc Io.inc new_phpdoc.php phpdoc.inc phpdoc.php ProceduralPages.inc Publisher.inc Template.inc WordParser.inc subpackage DescHTML subpackage DocBlockTags subpackage Errors subpackage InlineTags subpackage Links subpackage ParserData subpackage ParserDocBlock subpackage ParserElements subpackage Parsers subpackage Tutorial Classes:
Classes
EventStack Io phpDocumentor_IntermediateParser phpDocumentor_setup ProceduralPages Publisher Template
PhpDocumentor-1.2.0beta2
classLink defineLink DirNode functionLink globalLink methodLink pageLink parserAccessTag parserClass parserDefine parserElement parserExampleTag parserFileSourceTag parserFunction parserGlobal parserIdInlineTag parserInclude parserInheritdocInlineTag parserLinkInlineTag parserLinkTag parserMethod parserNameTag parserPackagePage parserParamTag parserReturnTag parserSeeTag parserSourceInlineTag parserSourceTag parserStaticvarTag parserStringWithInlineTags parserTocInlineTag parserTutorial parserTutorialInlineTag parserTutorialTag parserUsedByTag parserUsesTag parserVar parserVarTag phpDocumentorTWordParser RecordException tutorialLink varLink |
A DocBlock is an extended C++-style PHP comment that begins with "/**" and has an "*" at the beginning of every line. DocBlocks precede the element they are documenting.
To document function "foo()", place the DocBlock immediately before the function declaration:
This example will apply the DocBlock to "define('me',2);" instead of to "function foo()":
define() statements, functions, classes, class methods, and class vars, include() statements, and global variables can all be documented, see Elements of the source code that can be documented. DocBlocksA DocBlock contains three basic segments in this order:
The Short Description starts on the first line, and can be terminated with a blank line or a period. A period inside a word (like example.com or 0.1 %) is ignored. If the Short Description would become more than three lines long, only the first line is taken. The Long Description continues for as many lines as desired and may contain html markup for display formatting. Here is a sample DocBlock with a Short and a Long Description:
Optionally, you may enclose all paragraphs in a <p></p> tag. Be careful, if the first paragraph does not begin with <p>, phpDocumentor will assume that the DocBlock is using the simple double linebreak to define paragraph breaks as in:
Here is an example of using <p>
phpDocumentor also supports JavaDoc's DocBlock format through the command-line option -j, --javadocdesc. Due to the non-xhtml compliant unmatched p tag, we highly recommend you avoid this syntax whenever possible
phpDocumentor will convert all whitespace into a single space in the long description, use paragraph breaks to define newlines, or <pre>, as discussed in the next section DocBlock Description detailsAs of phpDocumentor 1.2.0, the long and short description of a DocBlock is parsed for a few select html tags that determine additional formatting. Due to the nature of phpDocumentor's output as multiple-format, straight html is not allowed in a DocBlock, and will be converted into plain text by all of the converters unless it is one of these tags:
For in-depth information on how phpDocumentor parses the description field, see ParserDescCleanup.inc DocBlock TemplatesNew for version 1.2.0, phpDocumentor supports the use of DocBlock templates. The purpose of a DocBlock template is to reduce redundant typing. For instance, if a large number of class variables are private, one would use a DocBlock template to mark them as private. DocBlock templates simply augment any normal DocBlocks found in the template block. A DocBlock template is distinguished from a normal DocBlock by its header. Here is the most basic DocBlock template:
The text that marks this as a DocBlock template is "/**#@+" - all 6 characters must be present. DocBlock templates are applied to all documentable elements until the ending template marker:
Note that all 8 characters must appear as "/**#@-*/" in order for phpDocumentor to recognize them as a template. Here is an example of a DocBlock template in action:
This example will parse as if it were:
Note that for $_var8 the DocBlock template merged with the DocBlock. The rules for merging are simple:
TagsTags are single words prefixed by a "@" symbol. Tags inform phpDocumentor how to present information and modify display of documentation. All tags are optional, but if you use a tag, they do have specific requirements to parse properly. A list of all possible tags in phpDocumentor follows:
In addition, tutorials allow two addition inline tags: {@id}, used to allow direct linking to sections in a tutorial, and {@toc}, used to generate a table of contents from {@id}s in the file. Think of {@id} like an <a name="idname"> HTML tag, it serves the same function. See inline {@id} and inline {@toc} for detailed information In the example below, {@id} is used to name the refsect1 "mysection" and the refsect2 "mysection.mysubsection" - note that the sub-sections inherit the parent section's id.
For an in-depth look at phpDocumentor tags, read phpDocumentor tags, and for an in-depth look at inline tags, read phpDocumentor Inline tags. Documenting your PHP project |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Caution |
|---|
| phpDocumentor is a great tool, but it will not write good documentation for you. Please read the phpDocumentor Guide to Creating Fantastic Documentation |
To understand the role of packages and how to use @package, it is important to know the logic behind packaging in PHP. The quest for structured programming led to the invention of functions, then classes, and finally packages. Traditionally, a re-usable software module was a collection of variables, constants and functions that could be used by another software package. PHP is an example of this model, as their are many extensions that consist of constants and functions like the tokenizer extension. One can think of the tokenizer extension as a package: it is a complete set of data, variables and functions that can be used in other programs. A more structured format of this model is of course objects, or classes. A class contains variables and functions (but no constants in PHP). A single class packages together related functions and variables to be re-used.
phpDocumentor defines package in two ways:
| Caution |
|---|
| It may be possible, but don't put classes into a different package from the file they reside in, that will be very confusing and unnecessary |
|
Perhaps the best way to organize packages is to put all procedural code into separate files from classes. PEAR recommends putting every class into a separate file. For small, utility classes, this may not be the best solution for all cases, but it is still best to separate packages into files for consistency.
phpDocumentor developers have received a number of requests to allow linking to external documentation, and to sections of that documentation. If phpDocumentor only could create HTML documents, this would be a simple task, but the presence of PDF and now XML converters as well as future possibilities complicates this question tremendously. What is the solution?
Give phpDocumentor the ability to parse external documentation in a common format and then convert it to the appropriate format for each converter. The implementation of this solution in version 1.2.0 is very versatile. Making use of the standard DocBook XML format, external documentation can be designed and then reformatted for any output. No longer is external documentation tied down to one "look." Here's a short list of the benefits of this approach:
Benefits of using DocBook as the format:
User-level documentation generally consists of tutorials and information on how to use a package, and avoids extreme detail. On the other hand, programmer-level documentation has all the details a programmer needs to extend and modify a package. phpDocumentor has been assisting the creation of programmer-level documentation since its inception. With the addition of tutorials, it can now ease the creation of user-level documentation.
For an in-depth look at how to use tutorials, read phpDocumentor Tutorials
There are two bundled ways of invoking phpDocumentor, the command-line phpdoc, or the web interface phpdoc.php/new_phpdoc.php.
In order to use the web interface, there are a number of factors that must be set up before anything else can occur. First, you need a working web server with php (it had to be said). This manual will not assist with that setup. Next, the phpdoc.php or new_phpdoc.php file needs to be accessible by the webserver. In unix, place a symbolic link using ln -s to the desired interface into the public html directory.
| Caution |
|---|
| Security is always an issue with the internet. Do not place phpDocumentor into the web server publicly available path on a server connected to the internet. Make sure that phpDocumentor will not have the power to overwrite ANY system or user files. |
Note that since the webserver runs as user nobody in unix, the generated files will be owned by nobody. The only way to change this is to either run phpDocumentor from the command-line or to add a chuser wrapper around httpd. We do not recommend using a chuser wrapper or running phpDocumentor as root. It is much easier and safer to use a config file (see phpDocumentor's dynamic User-defined config files) from the command line.
Running phpDocumentor from the command-line is fairly straightforward, even in windows. It is recommended to use the web interface in windows, from a non-publicly accessible server root, as none of the permissions issues exist that exist in unix. However, to use phpDocumentor from the command line is possible. First, put the location of php into the system path, then type:
C:\>php-cli C:\path\to\phpdoc\phpdoc [commandline]
An alternative is to edit the phpdoc.bat file, and place phpdoc in the path, then you can run phpdoc as a normal command.
Running the command-line tool phpdoc is very easy in unix:
.\phpdoc [commandline]
| Command-line switches | ||
| -ct | --customtags | comma-separated list of non-standard @tags to pass to the converter as valid tags |
| -d | --directory | name of a directory(s) to parse directory1,directory2 |
| -dh | --hidden | set equal to on (-dh on) to descend into hidden directories (directories starting with '.'), default is off |
| -dn | --defaultpackagename | name to use for the default package. If not specified, uses 'default' |
| -f | --filename | name of file(s) to parse ',' file1,file2. Can contain complete path and * ? wildcards |
| -i | --ignore | file(s) that will be ignored, multiple separated by ','. Wildcards * and ? are ok |
| -it | --ignore-tags | tags to ignore for this parse. @package, @subpackage, @access and @ignore may not be ignored. |
| -j | --javadocdesc | use JavaDoc-compliant description (short desc is part of description, and is everything up to first .) |
| -o | --output | output information, format:converter:template (HTML:frames:phpedit for example) |
| -p | --pear | Parse a PEAR-style repository (package is directory, _members are @access private) on/off default off |
| -po | --packageoutput | output documentation only for selected packages. Use a comma-delimited list |
| -pp | --parseprivate | parse elements marked private with @access. Valid options are "on" and "offn" default value is "off" |
| -q | --quiet | do not be verbose |
| -t | --target | path where to save the generated files |
| -ti | --title | title of generated documentation, default is 'Generated Documentation' |
Use this option to load a config file (see phpDocumentor's dynamic User-defined config files)
"phpdoc -c default" will load the default.ini file
Use this option to specify tags that should be included in the list of valid tags for the current run of phpdoc
"phpdoc -ct mytag,anothertag" will tell phpDocumentor to parse this DocBlock:
|
without raising any errors, and include the tags in the known tags list for the template to handle. Note that in version 1.2.0+, the unknown_tags array is passed to templates.
Use this option to tell phpDocumentor what the primary package's name is. This will also tell phpDocumentor to group any unpackaged elements into the primary packagename. If not specified, the primary package is "default"
|
This or the -f option must be present, either on the command-line or in the config file.
Unlike -f, -d does not accept wildcards. Use -d to specify full paths or relative paths to the current directory that phpDocumentor should recursively search for documentable files. phpDocumentor will search through all subdirectories of any directory in the command-line list for tutorials/ and any files that have valid .php extensions as defined in phpDocumentor.ini. For example:
"phpdoc -d relative/path/to/dir1,/fullpath/to/here,.."
This or the -d option must be present, either on the command-line or in the config file.
This option is used to specify individual files or expressions with wildcards * and ?. Use * to match any string, and ? to match any single character.
Use this option to tell phpDocumentor to parse files that begin with a period (.)
Use the -i option to exclude files and directories from parsing. The -i option recognizes the * and ? wildcards, like -f does. In addition, it is possible to ignore a subdirectory of any directory using "dirname/"
Use the -it option to exclude specific tags from output. This is used for creating multiple sets of documentation for different audiences. For instance, to generate documentation for end-users, it may not be desired to output all @todo tags, so --ignore-tags @todo would be used. To ignore inline tags, surround them with brackets {} like --ignore-tags {@internal}.
--ignore-tags will not ignore the core tags @global, @access, @package, @ignore, @name, @param, @return, @staticvar or @var.
Use this command-line option to enforce strict compliance with JavaDoc. JavaDoc DocBlocks are much less flexible than phpDocumentor's DocBlocks (see DocBlocks for information).
Use this required option to tell phpDocumentor which Converters and templates to use. In this release, there are several choices:
In 1.2.0+, it is possible to generate output for several converters and/or templates at once. Simply specify a comma-delimited list of output:converter:template like:
phpdoc -o HTML:frames:default,HTML:Smarty:PHP,HTML:frames:phpedit,PDF:default:default -t ./docs -d .
By default, phpDocumentor does not create documentation for any elements marked @access private. This allows creation of end-user API docs that filter out low-level information that will not be useful to most developers using your code. To create complete documentation of all elements, use this command-line option to turn on parsing of elements marked private with @access private.
Use this option to remove all elements grouped by @package tags in a comma-delimited list from output. This option is useful for projects that are not organized into separate files for each package. Parsing speed is not affected by this option, use -i, --ignore whenever possible instead of --packageoutput.
phpdoc -o HTML:frames:default -t ./docs -d . -po mypackage,thatotherpackage will only display documentation for elements marked with "@package mypackage" or "@package thatotherpackage"
Use this option to parse a PEAR-style repository. phpDocumentor will do several "smart" things to make life easier:
Use this to tell phpDocumentor where to put generated documentation. Legal values are paths that phpDocumentor will have write access and directory creation priveleges.
Set the global title of the generated documentation
The new -c, --config command-line options heralds a new era of ease in using phpDocumentor. What used to require:
phpdoc -t /path/to/output -d path/to/directory1,/another/path,/third/path -f /path/to/anotherfile.php -i *test.php,tests/ -pp on -ti My Title -o HTML:frames:phpedit
Can now be done in a single stroke!
phpdoc -c myconfig
What makes this all possible is the use of config files that contain all of the command-line information. There are two configuration files included in the distribution of phpDocumentor, and both are in the user/ subdirectory. To use a configuration file "myconfig.ini," simply place it in the user directory, and the command-line "phpdoc -c myconfig" will tell phpDocumentor to read all the command-line settings from that config file. Configuration files may also be placed in another directory, just specify the full path to the configuration file:
phpdoc -c /full/path/to/myconfig.ini
The best way to ensure your config file matches the format expected by phpDocumentor is to copy the default.ini config file, and modify it to match your needs. Lines that begin with a semi-colon (;) are ignored, and can be used for comments.
| Prev | Up | Next |
| phpDocumentor 1.2.0 Manual | phpDocumentor 1.2.0 Manual | Documentable PHP Elements |