<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   
	 xmlns:podcast='http://ipodder.sourceforge.net/docs/podcast.html'
>
<channel>
    <title>Lot 49: Greg Beaver's blog - phpDocumentor</title>
    <link>http://greg.chiaraquartet.net/</link>
    <description>Music, Computers, and all things Greg Beaver</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.3 - http://www.s9y.org/</generator>
    <pubDate>Wed, 25 Oct 2006 02:44:49 GMT</pubDate>

    <image>
        <url>http://greg.chiaraquartet.net/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Lot 49: Greg Beaver's blog - phpDocumentor - Music, Computers, and all things Greg Beaver</title>
        <link>http://greg.chiaraquartet.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>PhpDocumentor 1.3.1 is released</title>
    <link>http://greg.chiaraquartet.net/archives/153-PhpDocumentor-1.3.1-is-released.html</link>
            <category>PEAR</category>
            <category>PHP</category>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/153-PhpDocumentor-1.3.1-is-released.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=153</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=153</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    PhpDocumentor 1.3.1 has been released at both pear.php.net and sourceforge.net.  This release addresses a problem with the sourceforge release, as well as a few other minor bugs.  You can download it at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=330&amp;amp;entry_id=153&quot; title=&quot;http://pear.php.net/PhpDocumentor&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PhpDocumentor&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/PhpDocumentor&lt;/a&gt;, or through sourceforge at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=331&amp;amp;entry_id=153&quot; title=&quot;http://sourceforge.net/project/showfiles.php?group_id=11194&quot;  onmouseover=&quot;window.status=&#039;http://sourceforge.net/project/showfiles.php?group_id=11194&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://sourceforge.net/project/showfiles.php?group_id=11194&lt;/a&gt;
 
    </content:encoded>

    <pubDate>Tue, 24 Oct 2006 19:44:49 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/153-guid.html</guid>
    
</item>
<item>
    <title>PhpDocumentor 1.3.0 stable is released</title>
    <link>http://greg.chiaraquartet.net/archives/145-PhpDocumentor-1.3.0-stable-is-released.html</link>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/145-PhpDocumentor-1.3.0-stable-is-released.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=145</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=145</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;b&gt;RELEASE ANNOUNCEMENT&lt;/b&gt;&lt;br /&gt;PhpDocumentor 1.3.0 stable&lt;br /&gt;August 18, 2006&lt;br /&gt;Download:&lt;br /&gt;pear upgrade PhpDocumentor&lt;br /&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=320&amp;amp;entry_id=145&quot; title=&quot;http://pear.php.net/PhpDocumentor&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PhpDocumentor&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/PhpDocumentor&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=321&amp;amp;entry_id=145&quot; title=&quot;http://sourceforge.net/project/showfiles.php?group_id=11194&amp;amp;package_id=10450&amp;amp;release_id=440432&quot;  onmouseover=&quot;window.status=&#039;http://sourceforge.net/project/showfiles.php?group_id=11194&amp;amp;package_id=10450&amp;amp;release_id=440432&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://sourceforge.net/project/showfiles.php?group_id=11194&amp;amp;package_id=10450&amp;amp;release_id=440432&lt;/a&gt;&lt;br /&gt;Information and documentation:&lt;br /&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=322&amp;amp;entry_id=145&quot; title=&quot;http://www.phpdoc.org&quot;  onmouseover=&quot;window.status=&#039;http://www.phpdoc.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://www.phpdoc.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The PhpDocumentor team would like to announce the release of PhpDocumentor version 1.3.0.  This is the first stable release since 2003, and marks a dramatic step up from previous releases.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This release adds in:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;full PHP 5 support, including knowledge of internal classes for PHP version 5.1.0+ using the Reflection extension.&lt;/li&gt;&lt;li&gt;highlighting of tutorial XML&lt;/li&gt;&lt;li&gt;beautifying of output from the XML:DocBook/peardoc2:default converter&lt;/li&gt;&lt;/ol&gt;In addition, the release fixes more than 100 bugs found since version 1.2.3.  Output from source highlighting is much more efficient, resulting in slightly smaller file size for option sourcecode=on.  Multi-national characters are now allowed in a package name, although internationalization support is not fully complete.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;PhpDocumentor is the standard automatic documentation solution for PHP written in PHP.  Originally inspired by JavaDoc, PhpDocumentor has over 6 years of battle-testing and is bundled in popular IDEs such as Zend Studio, PHPEdit, PhpEd, and others.&lt;/p&gt;&lt;p&gt;On a personal note, I&#039;ve been working hard on this release (minus a year-long hiatus) to get it working, and am very excited to finally see it out in the wild.  Enjoy!&lt;/p&gt;&lt;p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 18 Aug 2006 08:15:53 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/145-guid.html</guid>
    
</item>
<item>
    <title>phpDocumentor and __get/__set/__call - give us your ideas (RFC)</title>
    <link>http://greg.chiaraquartet.net/archives/140-phpDocumentor-and-__get__set__call-give-us-your-ideas-RFC.html</link>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/140-phpDocumentor-and-__get__set__call-give-us-your-ideas-RFC.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=140</wfw:comment>

    <slash:comments>16</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;One of the trickier feature requests for phpDocumentor has been
documenting &amp;quot;magic&amp;quot; object properties and methods. By &amp;quot;magic&amp;quot; I am
referring to properties and methods that are created dynamically by PHP
5.0+ userspace class methods __get, __set, __isset, __unset and __call.
For instance, this code creates a read-only property named &lt;b&gt;$foo&lt;/b&gt; and a write-only property named &lt;b&gt;$bar&lt;/b&gt; and a regular property named &lt;b&gt;$regular&lt;/b&gt; as well as a magic function &lt;b&gt;borp()&lt;/b&gt; that accepts two parameters.&lt;/p&gt;&lt;p /&gt;&lt;p&gt;&lt;div class=&quot;php&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;class&lt;/span&gt; blah&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; private &lt;span style=&quot;color: #0000ff;&quot;&gt;$_thingy&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; private &lt;span style=&quot;color: #0000ff;&quot;&gt;$_bar&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; __get&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$var&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;switch&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$var&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;foo&#039;&lt;/span&gt; :&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;45&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;regular&#039;&lt;/span&gt; :&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$this&lt;/span&gt;-&amp;gt;_thingy;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; __set&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$var&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$val&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;switch&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$var&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;bar&#039;&lt;/span&gt; :&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;$this&lt;/span&gt;-&amp;gt;_bar = &lt;span style=&quot;color: #0000ff;&quot;&gt;$val&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;regular&#039;&lt;/span&gt; :&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/is_string&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;is_string&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$val&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;$this&lt;/span&gt;-&amp;gt;_thingy = &lt;span style=&quot;color: #0000ff;&quot;&gt;$val&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; __call&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$method&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$method&lt;/span&gt; == &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;borp&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; == &lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span style=&quot;color: #0000ff;&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;In order to document this stuff, we want to add 4 new tags that would only be recognized in a class docblock.  They are:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;@property&lt;/b&gt; - magic class variables that can be both read and written to&lt;/li&gt;&lt;li&gt;&lt;b&gt;@property-read&lt;/b&gt; - magic class variables that can only be read&lt;/li&gt;&lt;li&gt;&lt;b&gt;@property-write&lt;/b&gt; - magic class variable that can only be written to&lt;/li&gt;&lt;li&gt;&lt;b&gt;@method&lt;/b&gt; - magic class methods&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;@property&lt;/b&gt; and company would have this basic format:&lt;/p&gt;&lt;p /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;@property&lt;/b&gt; type $varname [description]&lt;/i&gt;&lt;/blockquote&gt;&lt;p /&gt;&lt;p&gt;&lt;b&gt;@method&lt;/b&gt; would have this basic format:&lt;/p&gt;&lt;p /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;@method&lt;/b&gt; returntype function_name(type $param1[ = &lt;default&gt;][, type $param2[ = &lt;default&gt;]...]) [description] &lt;/default&gt;&lt;/default&gt;&lt;/i&gt;&lt;p /&gt;&lt;/blockquote&gt;&lt;p /&gt;&lt;p&gt;So, in order to document the previous example code, we would use:&lt;/p&gt;&lt;p&gt;&lt;div class=&quot;php&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;/**&lt;br /&gt;&amp;#160;* show off @property, @property-read, @property-write, @method&lt;br /&gt;&amp;#160;*&lt;br /&gt;&amp;#160;* @property mixed $regular regular read/write property&lt;br /&gt;&amp;#160;* @property-read int $foo&lt;br /&gt;&amp;#160;* @property-write string $bar&lt;br /&gt;&amp;#160;* @method int borp(int $int1, int $int2) multiply two integers&lt;br /&gt;&amp;#160;*/&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;class&lt;/span&gt; blah&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; private &lt;span style=&quot;color: #0000ff;&quot;&gt;$_thingy&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; private &lt;span style=&quot;color: #0000ff;&quot;&gt;$_bar&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; __get&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$var&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;switch&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$var&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;foo&#039;&lt;/span&gt; :&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;45&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;regular&#039;&lt;/span&gt; :&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$this&lt;/span&gt;-&amp;gt;_thingy;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; __set&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$var&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$val&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;switch&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$var&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;bar&#039;&lt;/span&gt; :&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;$this&lt;/span&gt;-&amp;gt;_bar = &lt;span style=&quot;color: #0000ff;&quot;&gt;$val&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;regular&#039;&lt;/span&gt; :&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/is_string&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;is_string&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$val&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;$this&lt;/span&gt;-&amp;gt;_thingy = &lt;span style=&quot;color: #0000ff;&quot;&gt;$val&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; __call&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$method&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$method&lt;/span&gt; == &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;borp&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; == &lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span style=&quot;color: #0000ff;&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;This example is rather poor usage of __get/__set/__call, but our point is the documentation, so ignore that for now &lt;img src=&quot;http://greg.chiaraquartet.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;.  We will be accepting feedback for about two weeks, and at that point will announce the decision of how these things will be documented at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=310&amp;amp;entry_id=140&quot; title=&quot;http://www.phpdoc.org&quot;  onmouseover=&quot;window.status=&#039;http://www.phpdoc.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://www.phpdoc.org&lt;/a&gt;.  If you are a developer of an IDE and would like to standardize this decision, or are a user with a real need for this feature, please let us know if there is a better way of doing that that we have not thought of.  Comment on this entry or send an email to cellog at the-language-we&#039;re-talking-about.net 
    </content:encoded>

    <pubDate>Thu, 13 Jul 2006 13:50:00 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/140-guid.html</guid>
    
</item>
<item>
    <title>How can you help out with PEAR or phpDocumentor?</title>
    <link>http://greg.chiaraquartet.net/archives/134-How-can-you-help-out-with-PEAR-or-phpDocumentor.html</link>
            <category>PEAR</category>
            <category>PHP</category>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/134-How-can-you-help-out-with-PEAR-or-phpDocumentor.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=134</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=134</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;We have had many inquiries from people who wish to assist with developing phpDocumentor or with PEAR.  For those of you have written, thank you.  However, most requests are along the lines of &amp;quot;how can I help?&amp;quot; and typically do not continue when we answer.  Unfortunately, I&#039;ve taken to a rather nihilistic view of these inquiries. Interestingly enough, most people who do end up helping out skip the question &amp;quot;how can I help?&amp;quot; altogether!&lt;/p&gt;&lt;p&gt;The question itself is not useful because there is plenty of evidence out there suggesting how to help out.  Both PEAR and phpDocumentor have bug trackers [1].  These trackers list issues that have not been solved, and features that have not been implemented.  If you want to help out a project, take a look at the bugs, choose one, and write a message along the lines of this (feel free to cut and paste):&lt;/p&gt;&lt;p&gt;&amp;quot;Hi,&lt;/p&gt;&lt;p&gt;my name is XXXX and I would like to fix Bug #1234 for the [fill in project name like PEAR or PhpDocumentor] project.  If this issue has already been handled, I would instead like to take on Bug #1235.  Do you have any objection?&lt;/p&gt;&lt;p&gt;Thanks,&lt;br /&gt;Joe Shmoe&amp;quot;&lt;/p&gt;&lt;p&gt;Don&#039;t even wait to hear back from us, the next step is to fix the bug.  Become good friends with the &amp;quot;cvs diff -u&amp;quot; command, and use that to email a patch back.  The email should look something like:&lt;/p&gt;&lt;p&gt;&amp;quot;Hi,&lt;/p&gt;&lt;p&gt;I have a fix for Bug #1234, attached to this email as a unified diff against current CVS for [fill in project name like PEAR or PhpDocumentor].  If it looks good, could you commit the patch and close the bug?&lt;/p&gt;&lt;p&gt;Thanks,&lt;br /&gt;Joe Shmoe&amp;quot;&lt;/p&gt;&lt;p&gt;If, in the course of attempting to fix the bug, you encounter a problem (such as not being able to access CVS), or don&#039;t understand something about the code, do not give up!  Instead, send an email along these lines:&lt;/p&gt;&lt;p&gt;&amp;quot;Hi,&lt;/p&gt;&lt;p&gt;While attempting to fix Bug #1234, I have run up against some confusion.  [...Describe what you don&#039;t understand, or what is not working the way you expect].  Can you help me figure this out?&lt;/p&gt;&lt;p&gt;Thanks,&lt;br /&gt;Joe Shmoe&amp;quot;&lt;/p&gt;&lt;p&gt;Where, you might ask, should I send these emails?  For both projects, there are public mailing lists devoted to the development of the projects.  The best thing you can do is to send a message to these lists, and copy the lead developer (for PEAR/phpDocumentor, me) of the project in question.  PEAR&#039;s list is pear-core@lists.php.net, and phpDocumentor&#039;s list is phpdoc-devel@lists.bluga.net.  These are standard mailing lists, so the usual drill of sending a message to &amp;quot;phpdoc-devel-subscribe@lists.bluga.net&amp;quot; or &amp;quot;pear-core-subscribe@lists.php.net&amp;quot; will suffice to get you started.  You can email me directly by taking the domain name of this blog and substituting an &amp;quot;at&amp;quot; symbol for the first period before the quartet part of the domain.&lt;/p&gt;&lt;p&gt;Until we have a history of working together, always assume that your code needs work, and set aside concerns of ego.  It doesn&#039;t matter how much coding experience you have, what matters is diligence, humility and the ability to respond productively to criticism of the code itself (i.e. try to fix problems and then re-send the patch).  In most cases, if a patch fixes a bug but is slightly flawed, I will simply commit it with modification to fix the slight flaw.  If you&#039;re following the pear-cvs@lists.php.net list (or php.pear.cvs through news.php.net), you can see the way I have modified your patch, and learn for the next bug you fix or feature you implement.  Above all, don&#039;t be intimidated, it&#039;s just PHP, and even if you do submit total crap code, it will be caught by either the developers or the unit tests (at least for PEAR).&lt;/p&gt;&lt;p&gt;As for helping out with phpDocumentor, it may be overwhelming to see the number of bugs in the list.  What we really need from a developer is to develop a set of regression tests, so that as we clean the source code, we don&#039;t break anything.  For instance, I plan to streamline all of the parsers, and to remove or revamp the internal caching mechanism inside conversion.  This will be a huge project, even though the change is incremental, and will be the first step towards implementing the memory hogging.&lt;/p&gt;&lt;p&gt;PEAR 1.4.x is in a bugfix mode, but we are working on version 1.5.0.  There are already tons of regression tests in place, so this is more a question of helping out with design and development of new features.  Currently, there is one open bug report about a fatal error when installing through a third-party system (gentoo ebuild) that needs looking at and could be an easy first project for a new developer.&lt;/p&gt;&lt;p&gt;Frankly, if you wish to help out, you almost don&#039;t need to ask permission!  Just email with a patch solving a bug or implementing a feature.  What&#039;s the worst thing that could happen?  You&#039;d spend some time learning how these vastly important projects actually work, and maybe even improve your own PHP expertise in the process.  Even if your code is not accepted (bug fixes are almost always accepted as submitted, feature requests may not be), you come out ahead, and in the best case, you can get credit for fixing an issue that affects thousands and thousands of users.  Not too bad, eh?&lt;/p&gt;&lt;p&gt;[1]&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=291&amp;amp;entry_id=134&quot; title=&quot;http://pear.php.net/bugs/search.php?cmd=display&amp;amp;package_name[]=PEAR&amp;amp;status=Open&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/bugs/search.php?cmd=display&amp;amp;package_name[]=PEAR&amp;amp;status=Open&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR bug tracker&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=294&amp;amp;entry_id=134&quot; title=&quot;http://pear.php.net/bugs/search.php?cmd=display&amp;amp;package_name[]=PhpDocumentor&amp;amp;status=Open&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/bugs/search.php?cmd=display&amp;amp;package_name[]=PhpDocumentor&amp;amp;status=Open&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phpDocumentor bug tracker at PEAR&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=293&amp;amp;entry_id=134&quot; title=&quot;http://sourceforge.net/tracker/?group_id=11194&amp;amp;atid=111194&quot;  onmouseover=&quot;window.status=&#039;http://sourceforge.net/tracker/?group_id=11194&amp;amp;atid=111194&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phpDocumentor bug tracker at sourceforge.net&lt;/a&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=294&amp;amp;entry_id=134&quot; title=&quot;http://pear.php.net/bugs/search.php?cmd=display&amp;amp;package_name[]=PhpDocumentor&amp;amp;status=Open&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/bugs/search.php?cmd=display&amp;amp;package_name[]=PhpDocumentor&amp;amp;status=Open&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=291&amp;amp;entry_id=134&quot; title=&quot;http://pear.php.net/bugs/search.php?cmd=display&amp;amp;package_name[]=PEAR&amp;amp;status=Open&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/bugs/search.php?cmd=display&amp;amp;package_name[]=PEAR&amp;amp;status=Open&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;&lt;/a&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 26 May 2006 09:50:28 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/134-guid.html</guid>
    
</item>
<item>
    <title>phpDocumentor: taking advantage of source code highlighting in custom templates</title>
    <link>http://greg.chiaraquartet.net/archives/133-phpDocumentor-taking-advantage-of-source-code-highlighting-in-custom-templates.html</link>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/133-phpDocumentor-taking-advantage-of-source-code-highlighting-in-custom-templates.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=133</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;Recently, phpDocumentor 1.3.0RC6 was released (1.3.0 stable is coming soon, stay tuned).  In this release, I finally got around to fixing the problem with source highlighting and CSS in the HTML templates.  If you have been using your own custom template based on the standard distributed templates, you will need to make a few changes.  Most importantly, you&#039;ll need to go into your options.ini and make changes similar to this:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=289&amp;amp;entry_id=133&quot; title=&quot;http://cvs.php.net/viewcvs.cgi/pear/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini?r1=1.2&amp;amp;r2=1.3&quot;  onmouseover=&quot;window.status=&#039;http://cvs.php.net/viewcvs.cgi/pear/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini?r1=1.2&amp;amp;r2=1.3&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://cvs.php.net/viewcvs.cgi/pear/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini?r1=1.2&amp;amp;r2=1.3&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In addition, you&#039;ll want to make sure your style sheet has an entry similar to this:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=290&amp;amp;entry_id=133&quot; title=&quot;http://cvs.php.net/viewcvs.cgi/pear/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css?r1=1.1&amp;amp;r2=1.2&quot;  onmouseover=&quot;window.status=&#039;http://cvs.php.net/viewcvs.cgi/pear/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css?r1=1.1&amp;amp;r2=1.2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://cvs.php.net/viewcvs.cgi/pear/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css?r1=1.1&amp;amp;r2=1.2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you based your template off of another of the templates, you can see the exact choices you need by examining CVS of phpDocumentor (the above links can be used to navigate to the template you need)&lt;/p&gt;&lt;p&gt;Happy documenting!&lt;/p&gt;&lt;p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 22 May 2006 03:47:56 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/133-guid.html</guid>
    
</item>
<item>
    <title>phpDocumentor and PEAR - interesting crossing of paths</title>
    <link>http://greg.chiaraquartet.net/archives/131-phpDocumentor-and-PEAR-interesting-crossing-of-paths.html</link>
            <category>PEAR</category>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/131-phpDocumentor-and-PEAR-interesting-crossing-of-paths.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=131</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=131</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;Yesterday and today I released phpDocumentor 1.3.0RC6.  Aside from a number of exciting features and many important bug fixes, including some bugs opened over 2 years ago (!) this release is unique in another way: in addition to working as a PEAR-installable package, it also works as an extracted file.&lt;/p&gt;&lt;p&gt;This is a subtle but revolutionary change.  In order to do this, we have to take advantage of some interesting possibilities that package.xml 2.0 provides.  In fact, I designed several of the features of package.xml 2.0 to support this duality.  In particular, it is possible to bundle a file and completely ignore it.  We use this feature to handle the duality of the &amp;quot;phpdoc&amp;quot; command itself.&lt;/p&gt;&lt;p&gt;When installed through PEAR, a file named &amp;quot;pear-phpdoc&amp;quot; is installed as &amp;quot;phpdoc&amp;quot;, and if installed on windows, &amp;quot;pear-phpdoc.bat&amp;quot; is installed as &amp;quot;phpdoc.bat.&amp;quot;  Also bundled in the archive are the original &amp;quot;phpdoc&amp;quot; and &amp;quot;phpdoc.bat&amp;quot; commands needed to run phpDocumentor out of the box just by extracting the archive.  These files are simply ignored by the PEAR installer.&lt;/p&gt;&lt;p&gt;Another feature unique to package.xml 2.0 that makes this possible is the usage of package-time file tasks.  In particular, the replace task, which is used to set the version of phpDocumentor as displayed by the actual generation and the docbuilder web interface.&lt;/p&gt;&lt;p&gt;In addition, I finally updated the manual at http://www.phpdoc.org/manual to the current version.&lt;/p&gt;&lt;p&gt;So in short, things are coming together finally.&lt;/p&gt;&lt;p /&gt; 
    </content:encoded>

    <pubDate>Tue, 02 May 2006 14:31:00 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/131-guid.html</guid>
    
</item>
<item>
    <title>finally - a new release of phpDocumentor</title>
    <link>http://greg.chiaraquartet.net/archives/102-finally-a-new-release-of-phpDocumentor.html</link>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/102-finally-a-new-release-of-phpDocumentor.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=102</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=102</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=210&amp;amp;entry_id=102&quot; title=&quot;http://www.phpdoc.org&quot;  onmouseover=&quot;window.status=&#039;http://www.phpdoc.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phpDocumentor&lt;/a&gt; has been foundering for about a year, while I struggled with the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=211&amp;amp;entry_id=102&quot; title=&quot;http://pear.php.net/PEAR&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PEAR&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR installer&lt;/a&gt;.  Well, just now I released &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=212&amp;amp;entry_id=102&quot; title=&quot;http://pear.php.net/PhpDocumentor&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PhpDocumentor&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;1.3.0RC4 through pear.php.net&lt;/a&gt;.  A sourceforge release will follow some time in the next week or so.  This release is significant in that it fixes fatal errors encountered in PHP 5.0.5, and several significant bugs.  There is more work to be done before 1.3.0, but this is a big relief for me.&lt;/p&gt;&lt;p&gt;Getting this one out the door proved to be very difficult.  pear.php.net was timing out prior to finishing the release upload process.  This always sucks.  I did a bit of debugging (thank you ZDE 5.0) and some serious refactoring to the pearweb code.  What really surprised me was an incredible inefficiency in Archive_Tar that was actually iterating over the entire archive even when requested files had been extracted.  I fixed this manually up at pear.php.net, and even with the existing inefficient pearweb code, the upload completed successfully.  Wheeee, isn&#039;t development fun &lt;/p&gt;&lt;p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 29 Nov 2005 00:26:10 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/102-guid.html</guid>
    
</item>
<item>
    <title>new PECL docblock extension is a significant step forward in docblock parsing</title>
    <link>http://greg.chiaraquartet.net/archives/100-new-PECL-docblock-extension-is-a-significant-step-forward-in-docblock-parsing.html</link>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/100-new-PECL-docblock-extension-is-a-significant-step-forward-in-docblock-parsing.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=100</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=100</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;I just released &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=203&amp;amp;entry_id=100&quot; title=&quot;http://pecl.php.net/docblock&quot;  onmouseover=&quot;window.status=&#039;http://pecl.php.net/docblock&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pecl&lt;/a&gt; at pecl.php.net, my first PHP extension.  docblock is to phpDocumentor docblocks what the tokenizer extension is to PHP itself.  It takes a docblock as an argument, and returns an array of tokens.  Parsing docblocks in PHP has always been a major pain, and also very difficult to do correctly, because certain kinds of code simply won&#039;t parse correctly without a proper scanner (such as docblocks containing &amp;lt;code&amp;gt; and @fopen - phpDocumentor 1.3.x will try to parse the &amp;quot;@fopen&amp;quot; tag).&lt;/p&gt;&lt;p&gt;The docblock extension is tested only with PHP 5.1.0, but I&#039;m sure it can be adjusted to work with all PHP versions, as the interface with PHP logic is ridiculously simple.  Once I have a chance to test it with other PHP versions, it will be available for them as well.  To make the scanner, I used &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=204&amp;amp;entry_id=100&quot; title=&quot;http://www.re2c.org&quot;  onmouseover=&quot;window.status=&#039;http://www.re2c.org&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;re2c&lt;/a&gt; at the suggestion of people on the EFNet pecl IRC channel, and this was wonderful.  I had been&lt;/p&gt;&lt;p&gt;The extension is fully regression tested, and as such should work in every case.  To install, simply use &amp;quot;pecl install docblock&amp;quot; on unix.  A windows .dll is not yet available, but probably will be soon on &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=205&amp;amp;entry_id=100&quot; title=&quot;http://pecl4win.php.net&quot;  onmouseover=&quot;window.status=&#039;http://pecl4win.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pecl4win&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;As you might have guessed, phpDocumentor is alive and well.  The single largest problem with version 1.3.x and earlier is that it scales terribly.  In addition, the use of Smarty templates is rather unflexible and difficult to maintain properly.  Because of these shortcomings, after version 1.3.0 is released, it will be feature-frozen, and only bugs will be fixed.  All new features are being developed in a PHP 5.1+ version of phpDocumentor that will have the ability to store data.  This means incrementally parsing a large project will be possible, and in fact, the ability to only parse changed files is possible as well.  In addition, the use of a few essential PHP extensions like docblock and reflection will be used to better manage the parsing.  Reflection will be used for built-in classes like Exception.&lt;/p&gt;&lt;p&gt;However, first, we need to get phpDocumentor 1.3.0 out the door, and to that effect, look for 1.3.0RC4 very shortly.  This release will fix critical PHP5-related problems, and a few other issues.  There are many small edge case bugs that are more annoyances than functional problems which will be addressed in future releases.  Stay tuned!&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Mon, 21 Nov 2005 23:03:47 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/100-guid.html</guid>
    
</item>
<item>
    <title>latest addition: docblock lexer/parser combo</title>
    <link>http://greg.chiaraquartet.net/archives/72-latest-addition-docblock-lexerparser-combo.html</link>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/72-latest-addition-docblock-lexerparser-combo.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=72</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=72</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;my initial foray into the bug list at sourceforge for phpDocumentor has led to an unshakable conclusion: the docblock &amp;quot;parsing&amp;quot; currently used in phpDocumentor, well, sucks.&lt;/p&gt;&lt;p&gt;So, to solve problems such as this code breaking:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;/**&lt;br /&gt; * Watch the @include_once become a tag...&lt;br /&gt; *&lt;br /&gt; * Example:&lt;br /&gt; * &amp;lt;code&amp;gt;&lt;br /&gt; * @include_once &#039;oops_stupid_docblock_Parser.php&#039;;&lt;br /&gt; * &amp;lt;/code&amp;gt;&lt;br /&gt; */&lt;/font&gt;&lt;/p&gt;&lt;p&gt;I have started a hand-written lexer with an eye towards a phpJay-generated docblock parser.  I had originally attempted a phpLex auto-generated lexer for docblocks, but it quickly became a 2000-line plus undebuggable mess of spaghetti.  In addition, it simply couldn&#039;t do some things it needs to do, and so the docblock parser was far more complex than is healthy.  With the current code in cvs (700-something lines), the lexer supports everything the current one does plus proper handling of things like {@internal}} and special tags &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;.  More interesting, it supports nested simple lists (something humans intuitively can read) and has unit tests.  There&#039;s work to be done (edge cases, and I just realized I forgot to implement &amp;lt;ul&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;) but mostly we&#039;re fast on the way to an improved docblock parsing system, the first in a series of minor refactors that will add up to a major improvement in code, performance, and memory usage of phpDocumentor.&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;/font&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 01 Jul 2005 19:13:52 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/72-guid.html</guid>
    
</item>
<item>
    <title>development restarts after a year</title>
    <link>http://greg.chiaraquartet.net/archives/66-development-restarts-after-a-year.html</link>
            <category>phpDocumentor</category>
    
    <comments>http://greg.chiaraquartet.net/archives/66-development-restarts-after-a-year.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=66</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=66</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;Bongiorno!  I am writing this entry from Reggio Emilia, Italia where the weather is unbelievable and the generosity overflows.&lt;/p&gt;&lt;p&gt;That, however, is not the point of this entry.  After a full year&#039;s vacation from phpDocumentor development, I finally took up the mantle again and have started fixing bugs in 1.3.0RC3 in preparation for RC4.  In order to do this, I exported the bug list from sourceforge in xml format, and wrote a simplexml-based browser in about 1 hour.  Development actually began in the terminal at Paris&#039;s Charles de Gaulle airport, and is moving quite briskly.  5 bugs down so far, averaging about 1 bug every 10 minutes of development time.  Hopefully, by the time I return from Europe all of them will have been fixed &lt;img src=&quot;http://greg.chiaraquartet.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 12 Jun 2005 11:10:57 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/66-guid.html</guid>
    
</item>

</channel>
</rss>