Transcript
Page 1: The Beauty And The Beast Php N W09

The Beauty and the Beast

Bastian Federpapaya Software GmbH

PHPNW0910.10.2009

Page 2: The Beauty And The Beast Php N W09

Bastian Feder | papaya Software GmbH 2

Me, myself and I

application developer PHP since 2001 JavaScript since 2002 papaya CMS seit 01.2008

Page 3: The Beauty And The Beast Php N W09

Who are you?

Page 4: The Beauty And The Beast Php N W09

Agenda

● What is this phpDocumentor everyone is talking about?

● Doh! Too less space for a complete documentation!

● Nice so far! Are there tools supporting this thing?

● Where to find more information.

Page 5: The Beauty And The Beast Php N W09

What is this phpDocumentor?

● Automated documentation● Identifies annotations (tags)● Command line tool● Written in PHP● Converters render different formats (HTML,

Smarty, DocBook, etc)

Page 6: The Beauty And The Beast Php N W09

phpDocumentor - tags

● A phpDocumentor tag is an annotation telling a parser what to do with the given information.

● Rendering template decides which information will be displayed.

Page 7: The Beauty And The Beast Php N W09

Tags - examples

● @package, @subpackage, @category● @author, @license, @version● @param, @return● @access● @see, @link, @uses● @todo● @example, @tutorial

Page 8: The Beauty And The Beast Php N W09

inline{} tags

● Display their information in the text flow

/*** inline tags demonstration** this function works heavily with {@link foo()} to rule the world. If I want* to use the characters "{@link" in a docblock, I just use "{@}link." If* I want the characters "{@*}" I use "{@}*}"*/ function bar() { return; }

Page 9: The Beauty And The Beast Php N W09

DocBlock definition

/*** This is an example short description of a phpDocumentor DocBlock. ** This example shall show how a DocBlock shall look like and what information are * to be displayed.* This text and the upper license will be displayed in the rendered documentation as the * so called long description of the DocBlock. ** @copyright 2002-2008 by papaya Software GmbH - All rights reserved.* @link http://www.papaya-cms.com/* @license GNU General Public Licence (GPL) 2 http://www.gnu.org/copyleft/gpl.html* * You can redistribute and/or modify this script under the terms of the GNU General Public* License (GPL) version 2, provided that the copyright and license notes, including these* lines, remain unmodified. papaya is distributed in the hope that it will be useful, but* WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.** @package papayaCMS* @version $Id: index.php 19965 2008-08-11 12:23:29Z feder $*/

Page 10: The Beauty And The Beast Php N W09

DocBlock inheritence

● @author, @version, and @copyright are automatically inherited unless explicitly specified in the DocBlock

● @package and @subpackage are inherited unless explicitly specified in the DocBlock

● If there is no short description, the short description will be inherited.

● If there is no long description, the long description will be inherited.

● If there is a long description, and you still want to inherit the parent's description, use inline {@inheritdoc}

Page 11: The Beauty And The Beast Php N W09

Tutorials

● Ability to link in external documentation● DocBook format● Hooks are the inline{} tags● Enable rendering the tutorial:

– Existing subdir named „tutorials“

– Comandline switch „-d“, „--directory“, „-f“ or „--filename“ must contain the subdir

– Predefined structure: tutorials/package/package.pkg

Page 12: The Beauty And The Beast Php N W09

Tutorials – example integration

/*** FluentDOM implements a jQuery like replacement for DOMNodeList** @version $Id: FluentDOM.php 338 2009-09-28 13:21:22Z lapis $* @license http://www.opensource.org/licenses/mit-license.php The MIT License* @copyright Copyright (c) 2009 Bastian Feder, Thomas Weinert** @tutorial FluentDOM.pkg* @package FluentDOM*/

Page 13: The Beauty And The Beast Php N W09

Tutorials - example

<refentry id="{@id}"> <refnamediv> <refname>User Guide for FluentDOM</refname> <refpurpose></refpurpose> </refnamediv> <refsynopsisdiv> <author>Bastian Feder</author> <author>Thomas Weinert</author> </refsynopsisdiv> {@toc} <refsect1 id="{@id intro}"> <title>FluentDOM</title> <para> FluentDOM ist a jQuery like fluent XML interface for the DOMDocument in PHP. </para> <para> The idea was born in a workshop of {@link http://schlitt.info Tobias Schlitt}, about the PHP XML extensions at the IPC Spring, in Berlin. He used this idea to show XPath samples in the session. </para> </refsect1></refentry>

FluentDOM.pkg

Page 14: The Beauty And The Beast Php N W09

Quality check

● Error log (errors.html in root of API documentation)

● Todo list (todolist.html in root of API documentation)

Page 15: The Beauty And The Beast Php N W09

SVN / CVS identifier

● $Date: $– $Date: 2006-07-22 21:42:37 -0700 (Sat, 22 Jul 2006) $

● $Revision: $– $Revision: 144 $

● $Author: $– $Author: feder $

● $headURL: $– $HeadURL: http://svn.papaya.local/svn/weisseliste/trunk/README $

● $Id: $– $Id: content_assistant_step.php 19696 2008-08-05 15:52:41Z feder $

Page 16: The Beauty And The Beast Php N W09

SVN / CVS identifier (II)

● Location of 'config' – file:

– MacOsX/Linux:

~/.subversion/config– WinXp:

C:\Dokumente und Einstellungen\<USER>\Anwendungsdaten\Subversion\config

Page 17: The Beauty And The Beast Php N W09

SVN / CVS identifier (III)

● Add following lines to configuration file:

[miscellany]global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store .project .cache .settingsenable-auto-props = yes

[auto-props]*.js = svn:eol-style=LF;svn:keywords=Id LastChangedDate LastChangedRevision URL*.css = svn:eol-style=LF;svn:keywords=Id LastChangedDate LastChangedRevision URL*.php = svn:eol-style=LF;svn:keywords=Id LastChangedDate LastChangedRevision URL*.html = svn:eol-style=LF;svn:mime-type=text/html;svn:keywords=Id URL*.htm = svn:eol-style=LF;svn:mime-type=text/html;svn:keywords=Id URL*.xsl = svn:eol-style=LF*.xml = svn:eol-style=LF*.xsd = svn:eol-style=LF*.sql = svn:eol-style=LF*.txt = svn:eol-style=LF

Page 18: The Beauty And The Beast Php N W09

Eclipse PDT – docu hints

/*** Example description for a public class var.** @var base_plugin*/protected $basePluginObj;

If you plan to instantiate a new object in your class, declare the name of the class to be instantitated as type of the class var you will use.

Page 19: The Beauty And The Beast Php N W09

Eclipse PDT – docu hints (II)

● Once you declared the complete function DocBlock, Eclipse is able to show you these information in the tooltip of the function call.

● Try to hit F2 when the tooltip appears. This will set the focus to the tooltip and it can be resized to see the complete info.

Page 20: The Beauty And The Beast Php N W09

Eclipse PDT – docu hints (III)

● Magic methods– __clone()

– __empty()

– ...

● Magic properties– __set()

– __get()

/*** FluentDOM implements a jQuery like replacement for DOMNodeList** @property string $contentType Ouput type – text/xml or text/html* @property-read DOMDocument $document An instance of the current DOMDocument* @property-read DOMXPath $xpath An Instance of the current DOMXPath object** @method bool empty() clears the current node list identified by a selector* @method DOMDocument clone() clones the current node list identified by a selector** @package FluentDOM*/

Page 21: The Beauty And The Beast Php N W09

Eclipse PDT – docu hints

Page 22: The Beauty And The Beast Php N W09

external Tools framework

● Enables Eclipse to run ‚stand-alone‘ applications

● Two broad classes of external tools are available:– Ant build files – Everything else

Page 23: The Beauty And The Beast Php N W09

How to integrate

Page 24: The Beauty And The Beast Php N W09

How to integrate (II)

● Locationpoints to the phpDocumentor installation

● Working Directorydirectory to store temporary data

● Argumentscommand line parameters to be passed to phpDocumentor

'-c' defines the location of a configuration file

'${project_loc}' Eclipse variable representing the location of the current selected project.

Page 25: The Beauty And The Beast Php N W09

How to integrate (III)

● Display in favorites menu

● Standard Input and Output

Page 26: The Beauty And The Beast Php N W09

Any questions left?

Page 27: The Beauty And The Beast Php N W09

Slides'n Feedback

● Sildes(http://www.slideshare.net/lapistano)

● Feedback

– Personal contact([email protected])

– Joind'in(http://joind.in/talk/view/615)

Page 28: The Beauty And The Beast Php N W09

References

● phpDocumentor website @ pear.php.net(http://pear.php.net/package/PhpDocumentor/docs/1.4.4)

● phpDocumentor Manual(http://manual.phpdoc.org)

● FluentDOM(http://fluentdom.org)

● Eclipse website(http://eclipse-org/pdt)

● SVN keyword substitution(http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.advanced.props.special.keywords)

Page 29: The Beauty And The Beast Php N W09

License

This set of slides and the source code included in the download package is licensed under the

Creative Commons Attribution-Noncommercial-Share Alike 2.0 Generic

License

http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en