cvs: phpdoc /howto working.xml

From: Date: Wed, 22 Sep 2004 21:09:24 +0000
Subject: cvs: phpdoc /howto working.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969364240@lists.php.net to get a copy of this message
philip Wed Sep 22 17:09:24 2004 EDT Modified files: /phpdoc/howto working.xml Log: Added new doc skeletons for ini.xml configure.xml constants.xml reference.xml and func-name.xml

http://cvs.php.net/diff.php/phpdoc/howto/working.xml?r1=1.46&r2=1.47&ty=u Index: phpdoc/howto/working.xml diff -u phpdoc/howto/working.xml:1.46 phpdoc/howto/working.xml:1.47 --- phpdoc/howto/working.xml:1.46 Fri Sep 3 05:13:39 2004 +++ phpdoc/howto/working.xml Wed Sep 22 17:09:24 2004 @@ -465,22 +465,153 @@ <chapter id="chapter-skeletons"> <title>Documentation Skeletons</title> - <para> - Below are some "skeletons" to copy and paste from when adding - documentation. + Below are some "skeletons" to copy and paste from when adding + documentation. All of these files should end with a line ending ("\n"). If + a section does not exist (like a ChangeLog), simply don't include that + refsect1 inside the documentation. </para> + <note> + <para> + The documentation skeletons below are new, from around August of 2004. + </para> + </note> <para> <example> - <title>Function reference file in lang/reference/EXTNAME/functions</title> - <programlisting> -<![CDATA[ - <reference> - <title></title> - <titleabbrev></titleabbrev> + <title>A function skeleton (<filename>func-name.xml</filename>)</title> + <programlisting role="xml"> +&lt;?xml version="1.0" encoding="iso-8859-1"?&gt; +&lt;!-- $Revision: 1.47 $ --&gt; +&lt;refentry id="function.func-name"&gt; + &lt;refnamediv&gt; + &lt;refname&gt;func_name&lt;/refname&gt; + &lt;refpurpose&gt;The func_name purpose&lt;/refpurpose&gt; + &lt;/refnamediv&gt; + &lt;refsect1 role="description"&gt; + &amp;reftitle.description; + &lt;methodsynopsis&gt; + &lt;!-- Example: All functions have this --&gt; + &lt;type&gt;thereturned type&lt;/type&gt;&lt;methodname&gt;func_name&lt;/methodname&gt; + &lt;!-- Example: Required parameter --&gt; + &lt;methodparam&gt;&lt;type&gt;int&lt;/type&gt;&lt;parameter&gt;firstparameter&lt;/parameter&gt;&lt;/methodparam&gt; + &lt;!-- Example: Optional parameter --&gt; + &lt;methodparam choice="opt"&gt;&lt;type&gt;string&lt;/type&gt;&lt;parameter&gt;secondparameter&lt;/parameter&gt;&lt;/methodparam&gt; + &lt;!-- Example: Passed by reference --&gt; + &lt;methodparam&gt;&lt;type&gt;bool&lt;/type&gt;&lt;parameter role="reference"&gt;thirdparameter&lt;/parameter&gt;&lt;/methodparam&gt; + &lt;!-- Example: If no methodparams exist (void), use this --&gt; + &lt;void /&gt; + &lt;/methodsynopsis&gt; + &lt;para&gt; + The functions description goes here. + &lt;/para&gt; + &lt;/refsect1&gt; + &lt;refsect1 role="parameters"&gt; + &amp;reftitle.parameters; + &lt;para&gt; + &lt;variablelist&gt; + &lt;varlistentry&gt; + &lt;term&gt;&lt;parameter&gt;firstparameter&lt;/parameter&gt;&lt;/term&gt; + &lt;listitem&gt; + &lt;para&gt; + Its description + &lt;/para&gt; + &lt;/listitem&gt; + &lt;/varlistentry&gt; + &lt;varlistentry&gt; + &lt;term&gt;&lt;parameter&gt;secondparameter&lt;/parameter&gt;&lt;/term&gt; + &lt;listitem&gt; + &lt;para&gt; + Its description + &lt;/para&gt; + &lt;/listitem&gt; + &lt;/varlistentry&gt; + &lt;varlistentry&gt; + &lt;term&gt;&lt;parameter&gt;thirdparameter&lt;/parameter&gt;&lt;/term&gt; + &lt;listitem&gt; + &lt;para&gt; + Its description + &lt;/para&gt; + &lt;/listitem&gt; + &lt;/varlistentry&gt; + &lt;/variablelist&gt; + &lt;/para&gt; + &lt;/refsect1&gt; + &lt;refsect1 role="returnvalues"&gt; + &amp;reftitle.returnvalues; + &lt;para&gt; + What this function returns, first on success, then failure. If simply + true on success and false on failure, just use &amp;return.success; here. + &lt;/para&gt; + &lt;/refsect1&gt; + &lt;refsect1 role="changelog"&gt; + &amp;reftitle.changelog; + &lt;para&gt; + &lt;informaltable&gt; + &lt;tgroup cols="2"&gt; + &lt;thead&gt; + &lt;row&gt; + &lt;entry&gt;&amp;Version;&lt;/entry&gt; + &lt;entry&gt;&amp;Description;&lt;/entry&gt; + &lt;/row&gt; + &lt;/thead&gt; + &lt;tbody&gt; + &lt;row&gt; + &lt;entry&gt;Write the PHP version here (Ex. 4.3.0)&lt;/entry&gt; + &lt;entry&gt; + Describe the change + &lt;/entry&gt; + &lt;/row&gt; + &lt;row&gt; + &lt;entry&gt;...&lt;/entry&gt; + &lt;entry&gt; + ... + &lt;/entry&gt; + &lt;/row&gt; + &lt;/tbody&gt; + &lt;/tgroup&gt; + &lt;/informaltable&gt; + &lt;/para&gt; + &lt;/refsect1&gt; + &lt;refsect1 role="examples"&gt; + &amp;reftitle.examples; + &lt;para&gt; + &lt;example&gt; + &lt;title&gt;&lt;function&gt;functionname&lt;/function&gt; example&lt;/title&gt; + &lt;programlisting role="php"&gt; +&lt;![CDATA[ +&lt;?php +if ($anexample === true) { + echo 'Use the PEAR Coding standards'; +} +if ($thereisoutput === 'and it is multiple lines') { + echo 'Use a screen like we did below'; +} +?&gt; +]]&gt; + &lt;/programlisting&gt; + &amp;example.outputs.similar; + &lt;screen&gt; +&lt;![CDATA[ +Use the PEAR Coding standards +Use a screen like we did below +]]&gt; + &lt;/screen&gt; + &lt;/example&gt; + &lt;/para&gt; + &lt;/refsect1&gt; + &lt;refsect1 role="seealso"&gt; + &amp;reftitle.seealso; + &lt;para&gt; + &lt;simplelist&gt; + &lt;member&gt;&lt;function&gt;somefunc&lt;/function&gt;&lt;/member&gt; + &lt;member&gt;&lt;function&gt;another_func&lt;/function&gt;&lt;/member&gt; + &lt;member&gt;The &lt;link linkend="something"&gt;something appendix&lt;/link&gt;&lt;/member&gt; + &lt;/simplelist&gt; + &lt;/para&gt; + &lt;/refsect1&gt; +&lt;/refentry&gt; - </reference> -<!-- Keep this comment at the end of the file +&lt;!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t @@ -499,256 +630,220 @@ vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 ---> -]]> +--&gt; + </programlisting> </example> </para> - <para> <example> - <title>Function reference entry</title> - <programlisting> - &lt;refentry id="function."&gt; - &lt;refnamediv&gt; - &lt;refname&gt;&lt;/refname&gt; - &lt;refpurpose&gt;&lt;/refpurpose&gt; - &lt;/refnamediv&gt; - &lt;refsect1&gt; - &lt;title&gt;Description&lt;/title&gt; - &lt;methodsynopsis&gt; - &lt;type&gt;RETURNTYPE&lt;/type&gt; &lt;methodname&gt;FUNCTIONNAME&lt;/methodname&gt; - &lt;methodparam&gt;&lt;type&gt;ARGTYPE1&lt;/type&gt; &lt;parameter&gt;ARGNAME1&lt;/parameter&gt;&lt;/methodparam&gt; - &lt;methodparam&gt;&lt;type&gt;ARGTYPE2&lt;/type&gt; &lt;parameter&gt;ARGNAME2&lt;/parameter&gt;&lt;/methodparam&gt; - &lt;!-- optional parameter --&gt; - &lt;methodparam choice='opt'&gt; - &lt;type&gt;ARGTYPE3&lt;/type&gt; &lt;parameter&gt;ARGNAME3&lt;/parameter&gt; - &lt;/methodparam&gt; - &lt;!-- optional parameter with default value, choice='opt' is default in this case --&gt; - &lt;methodparam&gt; - &lt;type&gt;ARGTYPE3&lt;/type&gt; - &lt;parameter&gt;ARGNAME3&lt;/parameter&gt; - &lt;initializer&gt;default-value&lt;/initializter&gt; - &lt;/methodparam&gt; - &lt;!-- use &lt;void /&gt; if you have no parameters at all --&gt; - &lt;/methodsynopsis&gt; - &lt;simpara&gt; - A simple paragraph that can not contain anything that requires - fancy layout. - &lt;/simpara&gt; - &lt;para&gt; - A normal paragraph that can contain lots of stuff. For example - &lt;example&gt; - &lt;title&gt;Code examples&lt;/title&gt; - &lt;programlisting role="php"&gt; -&lt;![CDATA[ + <title>A <filename>reference.xml</filename> skeleton</title> + <programlisting role="xml"> +&lt;?xml version="1.0" encoding="iso-8859-1"?&gt; +&lt;!-- $Revision: 1.47 $ --&gt; +&lt;reference id="ref.extname"&gt; + &lt;title&gt;Extname &amp;Functions;&lt;/title&gt; + &lt;titleabbrev&gt;Extname&lt;/titleabbrev&gt; + + &lt;partintro&gt; + &lt;section id="extname.intro"&gt; + &amp;reftitle.intro; + &lt;para&gt; + + &lt;/para&gt; + &lt;/section&gt; -/* Use a role="php" only for PHP codes. See &lt;screen&gt; - * and other DocBook elements to express other - * types of listings. Use other role attributes for - * other type of programlistings, like: sql, httpd, ini, - * shell or http, as dictated by the example type. - */ - -/* Do all indentation with spaces, not tabs, just to be sure. - * Don't try pushing the code to the right by adding spaces in - * front, this is the style sheet's job. - */ - -// a function example -function some_code($foo) -{ - // use four spaces of indentation -} + &lt;section id="extname.requirements"&gt; + &amp;reftitle.required; + &lt;para&gt; + + &lt;/para&gt; + &lt;/section&gt; -// an example of bracket usage and spacing, always use -// brackets, even when they are physically not needed -if (some_code($foo) == "foo") { - echo "foo"; -} elseif (some_code($foo) == "bar") { - echo "bar"; -} else { - echo "No foo, no bar"; -} + &amp;reference.extname.configure; + &amp;reference.extname.ini; -]]&gt; - &lt;/programlisting&gt; - &lt;/example&gt; + &lt;section id="extname.resources"&gt; + &amp;reftitle.resources; + &amp;no.resource; + &lt;/section&gt; - The text in a paragraph may continue after the example as well. - Here is how to make lists: + &amp;reference.extname.constants; + &lt;/partintro&gt; - &lt;itemizedlist&gt; - &lt;listitem&gt; - &lt;simpara&gt; - List items must contain a container element such as - simpara or para (there are plenty of others too, see the - DocBook reference for the listitem element). - &lt;/simpara&gt; - &lt;/listitem&gt; - - &lt;listitem&gt; - &lt;simpara&gt; - List items must contain simple paragraphs or paragraphs. - &lt;/simpara&gt; - &lt;/listitem&gt; - &lt;/itemizedlist&gt; - - &lt;itemizedlist&gt; - &lt;listitem&gt; - &lt;para&gt; - If you plan on making sub-lists, you must use para - &lt;orderedlist&gt; - &lt;listitem&gt;&lt;simpara&gt; first list item&lt;/simpara&gt;&lt;/listitem&gt; - &lt;listitem&gt;&lt;simpara&gt; second list item&lt;/simpara&gt;&lt;/listitem&gt; - &lt;/orderedlist&gt; - You can also continue an ordered list you just left off - &lt;orderedlist&gt; - &lt;listitem&gt;&lt;simpara&gt; third list item&lt;/simpara&gt;&lt;/listitem&gt; - &lt;listitem&gt;&lt;simpara&gt; fourth list item&lt;/simpara&gt;&lt;/listitem&gt; - &lt;/orderedlist&gt; - &lt;/para&gt; - &lt;/listitem&gt; - &lt;/itemizedlist&gt; + &amp;reference.extname.functions; + +&lt;/reference&gt; + +&lt;!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:t +sgml-shorttag:t +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:1 +sgml-indent-data:t +indent-tabs-mode:nil +sgml-parent-document:nil +sgml-default-dtd-file:"../../../manual.ced" +sgml-exposed-tags:nil +sgml-local-catalogs:nil +sgml-local-ecat-files:nil +End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 +--&gt; - &lt;/para&gt; - &lt;simpara&gt; - The documentation for a function should be wrapped up with - a "See also" list like this: - &lt;/simpara&gt; - &lt;simpara&gt; - See also &lt;function&gt;stripslashes&lt;/function&gt; and - &lt;function&gt;quotemeta&lt;/function&gt;. - &lt;/simpara&gt; - &lt;/refsect1&gt; - &lt;/refentry&gt; </programlisting> </example> </para> <para> - For parts we have no skeleton here, please look at existing files in the - <filename>phpdoc</filename> CVS module. If you are not sure a specific file - is good for a start, please ask on the <link linkend="chapter-maillist">phpdoc - mailing list</link>. If you have any suggestions for more skeletons do not - hesitate. + There are several PECL related entities inside of + <filename>language-snippets.ent</filename>. Be sure to include information + on where Windows users can find the DLL. + <example> + <title>A <filename>configure.xml</filename> skeleton</title> + <programlisting role="xml"> +&lt;?xml version="1.0" encoding="iso-8859-1"?&gt; +&lt;!-- $Revision: 1.47 $ --&gt; +&lt;section id="extname.installation"&gt; + &amp;reftitle.install; + &lt;para&gt; + To enable extname support, configure PHP with + &lt;option role="configure"&gt;theconfigoption&lt;/option&gt; + &lt;/para&gt; + &lt;para&gt; + Windows users ... + &lt;/para&gt; +&lt;/section&gt; + +&lt;!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:t +sgml-shorttag:t +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:1 +sgml-indent-data:t +indent-tabs-mode:nil +sgml-parent-document:nil +sgml-default-dtd-file:"../../../manual.ced" +sgml-exposed-tags:nil +sgml-local-catalogs:nil +sgml-local-ecat-files:nil +End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 +--&gt; + + </programlisting> + </example> </para> <para> - And we're introducing a new doc skeleton where multiple refsect1's are - used, as well as a lot more entities. Names in ALLCAPS would be changed - so for example RETURNTYPE would instead be bool, string, etc. Here's a - draft using example_func() as an example. <emphasis>Do not implement this - style yet!</emphasis> There are also reftitles for classes, constructors, - and methods. An OOP doc skeleton will be written in the future. - reftitles are located in <filename>language-defs.ent</filename>. + <example> + <title>A <filename>constants.xml</filename> skeleton</title> + <programlisting role="xml"> +&lt;?xml version="1.0" encoding="iso-8859-1"?&gt; +&lt;!-- $Revision: 1.47 $ --&gt; +&lt;section id="extname.constants"&gt; + &amp;reftitle.constants; + &amp;extension.constants; + &lt;para&gt; + &lt;variablelist&gt; + &lt;varlistentry&gt; + &lt;term&gt; + &lt;constant&gt;CONSTANT_NAME&lt;/constant&gt; + (&lt;type&gt;itstype&lt;/type&gt;) + &lt;/term&gt; + &lt;listitem&gt; + &lt;simpara&gt; + + &lt;/simpara&gt; + &lt;/listitem&gt; + &lt;/varlistentry&gt; + &lt;/variablelist&gt; + &lt;/para&gt; +&lt;/section&gt; + +&lt;!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:t +sgml-shorttag:t +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:1 +sgml-indent-data:t +indent-tabs-mode:nil +sgml-parent-document:nil +sgml-default-dtd-file:"../../../manual.ced" +sgml-exposed-tags:nil +sgml-local-catalogs:nil +sgml-local-ecat-files:nil +End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 +--&gt; + + </programlisting> + </example> </para> <para> <example> - <title>An example example using refsect1's and reftitle entities</title> - <programlisting> -&lt;refentry id="function.example-func"&gt; - &lt;refnamediv&gt; - &lt;refname&gt;example_func&lt;/refname&gt; - &lt;refpurpose&gt;Displays how to write a function man page, no ending period here&lt;/refpurpose&gt; - &lt;/refnamediv&gt; - &lt;refsect1&gt; - &amp;reftitle.description; - &lt;methodsynopsis&gt; - &lt;type&gt;RETURNTYPE&lt;/type&gt;&lt;methodname&gt;example_func&lt;/methodname&gt; - &lt;methodparam&gt;&lt;type&gt;ARGTYPE1&lt;/type&gt;&lt;parameter&gt;ARGNAME1&lt;/parameter&gt;&lt;/methodparam&gt; - &lt;methodparam&gt;&lt;type&gt;ARGTYPE2&lt;/type&gt;&lt;parameter&gt;ARGNAME2&lt;/parameter&gt;&lt;/methodparam&gt; - &lt;!-- parameter takes on a referenced variable --&gt; - &lt;methodparam&gt;&lt;type&gt;ARGTYPE2&lt;/type&gt;&lt;parameter&gt;&amp;amp;ARGNAME2&lt;/parameter&gt;&lt;/methodparam&gt; - &lt;!-- optional parameter --&gt; - &lt;methodparam choice='opt'&gt;&lt;type&gt;ARGTYPE3&lt;/type&gt;&lt;parameter&gt;ARGNAME3&lt;/parameter&gt;&lt;/methodparam&gt; - &lt;!-- optional parameter with default value, choice='opt' is default in this case --&gt; - &lt;methodparam&gt; - &lt;type&gt;ARGTYPE3&lt;/type&gt; - &lt;parameter&gt;ARGNAME3&lt;/parameter&gt; - &lt;initializer&gt;DEFAULTVALUE&lt;/initializter&gt; - &lt;/methodparam&gt; - &lt;!-- Or, use &lt;void /&gt; if the function has no parameters at all --&gt; - &lt;/methodsynopsis&gt; - &lt;simpara&gt; - We are still in the description section. The description includes - information about the function, like what it does. This document is no - more than 78 characters in width except for the methodsynopsis. No tabs! - And only use unix-style line endings. - &lt;/simpara&gt; - &lt;para&gt; - To continue on with our description we document parameter changes although - this may have it's own section in the near future. - &lt;/para&gt; - &lt;/refsect1&gt; + <title>A <filename>ini.xml</filename> skeleton</title> + <programlisting role="xml"> +&lt;?xml version="1.0" encoding="iso-8859-1"?&gt; +&lt;!-- $Revision: 1.47 $ --&gt; +&lt;section id="extname.configuration"&gt; + &amp;reftitle.runtime; + &amp;extension.runtime; + &lt;para&gt; + &lt;table&gt; + &lt;title&gt;Extname &amp;ConfigureOptions;&lt;/title&gt; + &lt;tgroup cols="3"&gt; + &lt;thead&gt; + &lt;row&gt; + &lt;entry&gt;&amp;Name;&lt;/entry&gt; + &lt;entry&gt;&amp;Default;&lt;/entry&gt; + &lt;entry&gt;&amp;Changable;&lt;/entry&gt; + &lt;/row&gt; + &lt;/thead&gt; + &lt;tbody&gt; + &lt;row&gt; + &lt;entry&gt;theini_option&lt;/entry&gt; + &lt;entry&gt;itsvalue&lt;/entry&gt; + &lt;entry&gt;its PHP_INI_* value&lt;/entry&gt; + &lt;/row&gt; + &lt;/tbody&gt; + &lt;/tgroup&gt; + &lt;/table&gt; - &lt;refsect1&gt; - &amp;reftitle.returnvalues; - &lt;simpara&gt; - This section describes return values. If the function simply returns - TRUE on success and FALSE on failure, simply use the &amp;return.success; - entity here (this entity does not contain it's own para) otherwise describe - what the function returns in all cases. Also, there are &amp;true; and - &amp;false; entities. - &lt;/simpara&gt; - &lt;/refsect1&gt; - - &lt;refsect1&gt; - &amp;reftitle.examples; - &lt;para&gt; - Words may go here, but most likely not. Your example must meet the PEAR - Coding standards. - &lt;example&gt; - &lt;title&gt;An &lt;function&gt;example_func&lt;function&gt;example&lt;/title&gt; - &lt;programlisting role="php"&gt; -&lt;![CDATA[ -&lt;?php -/* Use a role="php" only for PHP codes. See &lt;screen&gt; - * and other DocBook elements to express other - * types of listings. Use other role attributes for - * other type of programlistings, like: sql, httpd, ini, - * shell or http, as dictated by the example type. - */ - -/* Do all indentation with spaces, not tabs, just to be sure. - * Don't try pushing the code to the right by adding spaces in - * front, this is the style sheet's job. - * - * All examples must meet the PEAR Coding Standard - */ + &amp;php_ini_constants; + &lt;/para&gt; -// a function example -function some_code($foo) -{ - // use four spaces of indentation -} - -// an example of bracket usage and spacing, always use -// brackets, even when they are physically not needed -if (some_code($foo) == 'foo') { - echo 'foo'; -} elseif (some_code($foo) == 'bar') { - echo 'bar'; -} else { - echo 'No foo, no bar'; -} -?&gt; -]]&gt; - &lt;/programlisting&gt; - &lt;/example&gt; - Words may go here, but most likely not. Notice the use of the &amp;listendand; - entity below, and how the functions are listed as one function per line. - There are no ending periods for see also's (or are there?). - &lt;/para&gt; - &lt;/refsect1&gt; - - &lt;refsect1&gt; - &amp;reftitle.seealso; - &lt;simpara&gt; - &lt;function&gt;somefunc&lt;/function&gt;, - &lt;function&gt;someother_func&lt;/function&gt;&amp;listendand; - &lt;function&gt;yetanotherfunc&lt;/function&gt; - &lt;/simpara&gt; - &lt;/refsect1&gt; -&lt;/refentry&gt; + &amp;ini.descriptions.title; + + &lt;para&gt; + &lt;variablelist&gt; + &lt;varlistentry id="ini.extname.theini-option"&gt; + &lt;term&gt; + &lt;parameter&gt;theini_option&lt;/parameter&gt; + &lt;type&gt;thetype&lt;/type&gt; + &lt;/term&gt; + &lt;listitem&gt; + &lt;para&gt; + + &lt;/para&gt; + &lt;/listitem&gt; + &lt;/varlistentry&gt; + &lt;/variablelist&gt; + &lt;/para&gt; +&lt;/section&gt; &lt;!-- Keep this comment at the end of the file Local variables: @@ -761,7 +856,7 @@ sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil -sgml-default-dtd-file:"../../../../manual.ced" +sgml-default-dtd-file:"../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil @@ -770,15 +865,9 @@ vim: et tw=78 syn=sgml vi: ts=1 sw=1 --&gt; + </programlisting> </example> - </para> - <para> - For parts we have no skeleton here, please look at existing files in the - <filename>phpdoc</filename> CVS module. If you are not sure a specific file - is good for a start, please ask on the <link linkend="chapter-maillist">phpdoc - mailing list</link>. If you have any suggestions for more skeletons do not - hesitate. </para> </chapter>
« previous php.doc (#969364240) next »