doc:howto:faq

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:howto:faq [2009/03/31 19:03] – added %% to disable wiki markup where appropriate (%%--%%) philipdoc:howto:faq [2013/01/24 03:35] – :( philip
Line 3: Line 3:
 //If a <refentry> should not emit versioning information, what should I do?// //If a <refentry> should not emit versioning information, what should I do?//
   * Add the **role="noversion"** to its <refentry>   * Add the **role="noversion"** to its <refentry>
-  * Example: %%<refentry xml:id="reserved.variables.argc" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"%% //role="noversion//%%">%%+  * Example: %%<refentry xml:id="reserved.variables.argc" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" role="noversion//">%%
  
 //How do I add a link to a method?// //How do I add a link to a method?//
   * Use %%<methodname>Class::Method</methodname>%%   * Use %%<methodname>Class::Method</methodname>%%
   * Note that the case does not matter when adding a link.   * Note that the case does not matter when adding a link.
 +
 +//How do I add an external link to the documentation?//
 +  * All external links are added to doc-base/entities/global.ent
 +  * Add the link there (to global.ent)
 +  * The global.ent markup might look like: %%<!ENTITY spec.google "http://www.google.com/">%%
 +  * Add the link to the documentation (foo.xml)
 +  * The markup might look like: %%<link xlink:href="&spec.google;">google spec</link>%%
 +  * Be sure the file understands the namespace with %%xmlns:xlink="http://www.w3.org/1999/xlink"%% in the root element
 +
 +//I made a change to a file but want to revert this change, how?//
 +  * To merge a file to the previous state: svn merge -rHEAD:PREV filename.xml
 +  * Then, to commit it: svn commit filename.xml -m "reverted previous commit"
  
 //I'm about to document a new PHP extension... how should I start?// //I'm about to document a new PHP extension... how should I start?//
-  * Use phpdoc/scripts/docgen/*+  * Use the script found within phpdoc/doc-base/scripts/docgen/*
   * Example: $ php docgen.php -h   * Example: $ php docgen.php -h
-  * It creates the skeletons then each file should be edited+  * Example: $ php docgen.php -e simplexml -o outdir 
 +  * It creates the skeletons that you edit then commit 
 + 
 +//I created skeletons that contain a bunch of default text, should I commit it?// 
 +  * No, edit the files before commit.  
 +  * Reason 1: Translators 
 +  * Reason 2: Temporary often becomes permanent, and bogus text is not good 
 + 
 +//I documented an extension but it's not building. Why?// 
 +  * Likely because it has not yet been added to doc-base/manual.xml.in 
 +  * So, add the book to the appropriate reference location there. Open file for examples. 
 +  * Or, configure.php is failing... the error should help
  
 //I want to contribute to the PHP Manual, how?// //I want to contribute to the PHP Manual, how?//
   * First, read the [[doc:HOWTO]]   * First, read the [[doc:HOWTO]]
-  * Check out the sources: $ cvs -d :pserver:cvsread@cvs.php.net:/repository checkout phpdoc +  * Check out the sources: $ svn checkout http://svn.php.net/repository/phpdoc/modules/doc-en 
-  * For a translation, change phpdoc to phpdoc-{lang} where {lang} is the language code+  * For a translation, change the checkout to phpdoc/modules/doc-{lang} where {lang} is the language code
   * ...   * ...
  
Line 35: Line 58:
 //In the changelog, which order do the PHP versions go?// //In the changelog, which order do the PHP versions go?//
   * Newest PHP versions go above the older ones   * Newest PHP versions go above the older ones
 +
 +//In the changelog, a change happened in two PHP versions. How do I enter this?//
 +  * Multiple versions are separated by a comma, with the lesser version first. Example: %%<entry>5.2.11, 5.3.1</entry>%%
 +
 +//How do I add markup for a configure option?//
 +  * Example: %%<option role="configure">--enable-debug</option>%%
 +
 +//When adding a <note>, should I add a <title>?//
 +  * Typically titles are useful for notes, but it's not required.
 +  * Syntax: %%<note><title>foo</title><para>note contents</para></note>%%
 +
 +//A feature became available in PHP X.Y.Z, how do I document that?//
 +  * Version information for functions is stored inside **versions.xml** within each extension: phpdoc/en/extname/version.xml
 +  * Changes to functions, like added parameters, are documented within changelogs for each page
 +  * Example Text: Feature X has been available since PHP X.Y.Z
 +  * TODO: Research other ways, and the best way, to write this text (including dealing with code examples)
  
 //Why does everyone care so much about whitespace?// //Why does everyone care so much about whitespace?//
Line 40: Line 79:
   * XML is one space, PHP example code is four, and max width is ~78 characters   * XML is one space, PHP example code is four, and max width is ~78 characters
   * Exceptions: <refpurpose> is on one line, ...   * Exceptions: <refpurpose> is on one line, ...
 +
 +//A parameter is optional, how is it documented?//
 +  * Like normal, except methodparam receives the choice="opt" attribute, and the <initializer> tag is used to signify the default value.
 +  * Example: %%<methodparam choice="opt"><type>bool</type><parameter>httponly</parameter><initializer>false</initializer></methodparam>%%
 +
 +//Do I need to edit these entities* files?//
 +  * No, these are auto-generated by the configure process
 +  * Examples: entities/file-entities.ent and en/reference/foo/entities.bar.xml
 +  * Also, do not commit them
  
 // How do I create a patch? // // How do I create a patch? //
-  * In the command-line, go to the CVS directory: +  * In the command-line, go to the SVN directory: 
-  * cd /path/to/phpdoc/cvs +  * cd /path/to/phpdoc/svn 
-  * To diff the entire repository: **cvs diff -u** +  * To diff the entire repository: **svn diff** 
-  * To diff a single file: **cvs diff -u foo.xml** +  * To diff a single file: **svn diff foo.xml** 
-  * Consider piping the diff to a file, so: **cvs diff -u foo.xml > mypatch.txt**+  * Consider piping the diff to a file, so: **svn diff foo.xml > mypatch.txt**
  
 // How do I apply a patch? // // How do I apply a patch? //
Line 52: Line 100:
   * Go to the directory with the files to be patched   * Go to the directory with the files to be patched
   * And run this command: **patch -p0 < apatch.txt**   * And run this command: **patch -p0 < apatch.txt**
 +
 +// Is there an online editor? //
 +  * Yes and No. 
 +  * Yes one exists in SVN and is being worked on.
 +  * No it's not yet in use.
 +  * Demo: https://edit.php.net/
 +
 +// How often is the documentation built? //
 +  * Weekly on mirrors, several times daily on the doc server
 +  * For specifics, see the [[doc:builds|doc builds]] article
 +
 +// I see example.outputs and example.outputs.similar entities, what's the difference? //
 +  * The example.outputs.similar entity is used when the output may differ between executions or machines
 +  * The example.outputs entity output will always, under all conditions, be the same
 +
 +// I need to add a piece of text to three or more pages, how? //
 +  * Add the snippet to en/language-snippets.ent as an entity
 +  * Link to the entity within the desired pages
 +  * This is done so translators can update one version of this text
 +
 +// How do I find missing documentation? Or undocumented (proto only) documentation? //
 +
 +Missing functions (no associated XML files) can be found like so (assuming a doc checkout, and PhD is installed):
 +<code shell>
 +php doc-base/configure.php
 +phd --docbook doc-base/.manual.xml --package PHP --format php
 +php doc-base/scripts/check-missing-docs.php -d output/index.sqlite
 +</code>
 +Undocumented documentation (skeletons exist, but only prototypes and basic information) can be found here: http://doc.php.net/php/undoc_functions.php
 +
 +// What .subversion/config settings should I have set? //
 +
 +<code>
 +*.xml = svn:eol-style=native;svn:keywords=Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
 +</code>
doc/howto/faq.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1