<?xml version="1.0" encoding="iso-8859-1"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://purl.org/rss/1.0/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
>
    <channel rdf:about="http://pear.php.net/">
    <link>http://pear.php.net/</link>
    <dc:creator>pear-webmaster@lists.php.net</dc:creator>
    <dc:publisher>pear-webmaster@lists.php.net</dc:publisher>
    <dc:language>en-us</dc:language><items>
<rdf:Seq><rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=556"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=553"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=552"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=547"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=538"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=536"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=534"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=532"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=523"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=514"/>
</rdf:Seq>
</items>

<title>PEPr: Latest proposals with status Proposed</title>
<description>The latest PEPr proposals with status Proposed</description>
</channel>

<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=556">
 <title>PEPr Proposal [556]: Payment::Payment_PayPalSoap</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=556</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Payment::Payment_PayPalSoap&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/gauthierm&quot;&gt;Michael Gauthier&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;This package provides an easy-to-use wrapper of PHP 5's SOAP client&lt;br /&gt;&lt;br /&gt;
for use with the PayPal SOAP API.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;By itself, this package isn't very useful. It should be used in combination with the documentation provided by PayPal at &lt;a href=&quot;https://www.paypal.com/en_US/pdf/PP_APIReference.pdf&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;https://www.paypal.com/en_US/pdf/PP_APIReference.pdf&lt;/a&gt;. This package makes it easier to get up and running, and allows you to begin integration by making requests rather than by figuring out how to set SOAP authentication headers.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;This package requires PHP 5.1.0 or greater, built with the SOAP extension enabled.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;

 </content:encoded>
 <dc:date>2008-04-28T19:32:33-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=553">
 <title>PEPr Proposal [553]: System::Daemon</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=553</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        System::Daemon&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/kvz&quot;&gt;Kevin van Zonneveld&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
System_Daemon turns PHP-CLI scripts into daemons (background processes on Linux).&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Some features:&lt;br /&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt; Support for PEAR's Log package&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Simple syntax&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Methods to determine OS and write startup files (init.d)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Can run with or without PEAR (PEAR adds more elegance &amp;amp; functionality)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Default signal handlers, but optionally reroute signals to your own handlers.&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Log levels comply with PEAR_LOG_ levels but are called SYSTEM_DAEMON_LOG_ for (in)dependency reasons&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Set options like max RAM usage&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;
Minimalistic Usage Example:&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;&lt;br /&gt;
require_once &amp;quot;System/Deamon.php&amp;quot;;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
// Set at least these properties&lt;br /&gt;&lt;br /&gt;
System_Daemon::$appName = &amp;quot;simple&amp;quot;;&lt;br /&gt;&lt;br /&gt;
System_Daemon::$appDir   = dirname(__FILE__);&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
System_Daemon::log(1, &amp;quot;Daemon not yet summoned. Writing this to STDOUT&amp;quot;);&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
// Spawn Deamon!&lt;br /&gt;&lt;br /&gt;
System_Daemon::start();&lt;br /&gt;&lt;br /&gt;
System_Daemon::log(1, &amp;quot;Daemon: 'simple' summoned! Writing this to /var/log/simple.log&amp;quot;);&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
// Your normal PHP code goes here. Only now the code will run in the&lt;br /&gt;&lt;br /&gt;
// background so you can close your terminal session, and the application &lt;br /&gt;&lt;br /&gt;
// will still run.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
System_Daemon::stop();&lt;br /&gt;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;&lt;br /&gt;
&lt;/code&gt;
 </content:encoded>
 <dc:date>2008-04-19T10:45:37-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=552">
 <title>PEPr Proposal [552]: Networking::Net_GPS</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=552</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Networking::Net_GPS&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/kei&quot;&gt;Horikita Kei&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This package provides GPS (Global Positioning System) information based on HTTP_USER_AGENT strings of (mainly Japanese) mobile HTTP user agents.&lt;br /&gt;&lt;br /&gt;
It creates url to access to the GPS and provides a method to parse the response.
 </content:encoded>
 <dc:date>2008-04-15T07:50:28-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=547">
 <title>PEPr Proposal [547]: Database::SimpleDAO</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=547</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Database::SimpleDAO&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/sherekan&quot;&gt;Huilen Abed Moure&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
SimpleDAO is a Data Access Object generator for PHP 5 and MySQL applications.
 </content:encoded>
 <dc:date>2008-04-02T19:24:59-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=538">
 <title>PEPr Proposal [538]: RFC::Coding standard enhancements</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=538</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        RFC::Coding standard enhancements&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/cweiske&quot;&gt;Christian Weiske&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;div id=&quot;toc&quot;&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;br /&gt;
	&lt;div style=&quot;margin-left: -1em;&quot;&gt;&lt;a href=&quot;#toc0&quot;&gt; Introduction&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
	&lt;div style=&quot;margin-left: -1em;&quot;&gt;&lt;a href=&quot;#toc1&quot;&gt; Split function definitions onto several lines&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
	&lt;div style=&quot;margin-left: -1em;&quot;&gt;&lt;a href=&quot;#toc2&quot;&gt; Split function call on several lines&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
	&lt;div style=&quot;margin-left: -1em;&quot;&gt;&lt;a href=&quot;#toc3&quot;&gt; Split long assigments onto several lines&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
	&lt;div style=&quot;margin-left: -1em;&quot;&gt;&lt;a href=&quot;#toc4&quot;&gt; Split long &lt;i&gt;if&lt;/i&gt; statements onto several lines&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
	&lt;div style=&quot;margin-left: -1em;&quot;&gt;&lt;a href=&quot;#toc5&quot;&gt; Alignment of function parameters&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
	&lt;div style=&quot;margin-left: -1em;&quot;&gt;&lt;a href=&quot;#toc6&quot;&gt; Alignment of assignments&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h1 id=&quot;toc0&quot;&gt; Introduction&lt;/h1&gt;&lt;br /&gt;
&lt;p&gt;This RFC defines changes and enhancements to the &lt;a href=&quot;http://pear.php.net/manual/en/standards.php&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;current Coding Standards&lt;/a&gt; (CS) in PEAR. They are neccessary because the standards are not clear in some cases. With applications like PHP_CodeSniffer being used, is is important that those issues are worked out and tools can deliver reliable warnings and CS errors.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h1 id=&quot;toc1&quot;&gt; Split function definitions onto several lines&lt;/h1&gt;&lt;br /&gt;
&lt;p&gt;Functions with many parameters need to be split onto several lines to keep the 80 chars/line limit.&lt;br /&gt;&lt;br /&gt;
The first parameters may be put onto the same line as the function name if there is enough space.&lt;br /&gt;&lt;br /&gt;
Subsequent parameters on following lines are to be indented 4 spaces. The closing parenthesis and the opening brace are to be put onto the next line, on the same indentation level as the &amp;quot;function&amp;quot; keyword.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Example:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;someFunctionWithAVeryLongName&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$firstParameter &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'something'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$secondParameter &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'booooo'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$third &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fourthParameter &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fifthParameter &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;123.12&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$sixthParam &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;true&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//....&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h1 id=&quot;toc2&quot;&gt; Split function call on several lines&lt;/h1&gt;&lt;br /&gt;
&lt;p&gt;The CS require lines to have a maximum length of 80 chars.&lt;br /&gt;&lt;br /&gt;
Calling functions or methods with many parameters while adhering to CS is impossible in that cases. It should be allowed to split parameters in function calls onto several lines.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Example:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;someObject&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;subObject&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;callThisFunctionWithALongName&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$parameterOne&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$parameterTwo&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$aVeryLongParameterThree&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Several parameters per line should be allowed. Parameters need to be indented 4 spaces compared to the level of the function call. The opening parenthesis is to be put at the end of the function call line, the closing parenthesis gets its own line at the end of the parameters. This shows a visual end to the parameter indentations and follows the opening/closing brace rules for functions and conditionals. (See &lt;a href=&quot;http://pear.php.net/bugs/bug.php?id=11562&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;bug #11562&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The same applies not only for parameter variables, but also for nested function calls.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Example:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;someObject&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;subObject&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;callThisFunctionWithALongName&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;someOtherFunc&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;br /&gt;
        &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;someEvenOtherFunc&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(),&lt;br /&gt;
        &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;someEvenOtherFunc&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;()&lt;br /&gt;
    ),&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;wowowowowow&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;
);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Nesting those function parameters is allowed if it helps to make the code more readable, not only when it is necessary when the characters per line limit is reached.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h1 id=&quot;toc3&quot;&gt; Split long assigments onto several lines&lt;/h1&gt;&lt;br /&gt;
&lt;p&gt;Assigments may be split onto several lines when the character/line limit would be exceeded. The equal sign has to be positioned onto the following line, and indented 4 characters.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Example:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$GLOBALS&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'TSFE'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;]-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;additionalHeaderData&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strApplicationName&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;]&lt;br /&gt;
    = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;xajax&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;getJavascript&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;t3lib_extMgm&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;siteRelPath&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'nr_xajax'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h1 id=&quot;toc4&quot;&gt; Split long &lt;i&gt;if&lt;/i&gt; statements onto several lines&lt;/h1&gt;&lt;br /&gt;
&lt;p&gt;Long &lt;i&gt;if&lt;/i&gt; statements may be split onto several lines when the character/line limit would be exceeded. The conditions have to be positioned onto the following line, and indented 4 characters. The logical operators (&amp;amp;&amp;amp;, ||, etc.) should be at the beginning of the line to make it easier to comment (and exclude) the condition. The closing parenthesis and opening brace get their own line at the end of the conditions.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Example:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if ((&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$condition1&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;|| &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$condition2&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;
    &amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$condition3&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$condition4&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//code here&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;} &lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The first condition may be aligned to the others.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Example:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if (   &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$condition1&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;|| &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$condition2&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;|| &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$condition3&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;
    &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//code here&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h1 id=&quot;toc5&quot;&gt; Alignment of function parameters&lt;/h1&gt;&lt;br /&gt;
&lt;p&gt;To support readability, parameters in subsequent calls to the same function/method may be aligned by parameter name:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;callSomeFunction&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'param1'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,     &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'second'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,        &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;callSomeFunction&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'parameter2'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'third'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,         &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;callSomeFunction&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'3'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,          &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'verrrrrrylong'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h1 id=&quot;toc6&quot;&gt; Alignment of assignments&lt;/h1&gt;&lt;br /&gt;
&lt;p&gt;To support readability, the equal signs should be aligned in block-related assignments:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$short  &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$bar&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$longer &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$baz&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
the rule may be broken when the length of the variable name is at least 8 characters longer/shorter than the previous one:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$short &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$bar&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$thisVariableNameIsVeeeeeeeeeeryLong &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$baz&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;

 </content:encoded>
 <dc:date>2008-03-07T11:34:53-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=536">
 <title>PEPr Proposal [536]: Streams::Stream_Iterate</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=536</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Streams::Stream_Iterate&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/jausions&quot;&gt;Philippe Jausions&lt;/a&gt;&amp;nbsp;[&lt;a href=&quot;http://pear.php.net/wishlist.php/jausions&quot;&gt;Wishlist&lt;/a&gt;]&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3 id=&quot;toc7&quot;&gt; Overview&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;Here's a little class to allow accessing a traversable variable (array, Iterator, etc...) as a stream using callbacks. The variable is transversed and each key/value is passed to the callback(s) to be transformed into a string to be piped into the stream. The stream is read forward-only, and has an undetermined length.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;I first developed this class to use with MDB2_Iterator and HTTP_Download (note that HTTP_Download needs the patch of &lt;a href=&quot;http://pear.php.net/bugs/13125&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;bug #13125&lt;/a&gt; to handle undetermined content size.)&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;With PHP 5.3+ there will be stream context support for copy(). That will allow to very easily dump data to file (&lt;a href=&quot;http://code.google.com/p/php-stream-iterate/source/browse/trunk/php-stream-iterate/docs/examples/copy.php&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;see example&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 id=&quot;toc8&quot;&gt; Code Sample&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;require_once &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'Stream/Iterate.php'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// Register class as &quot;foreach&quot; protocol&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$protocol &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Stream_Iterate&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;register&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'foreach'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// Some data we can iterate over with foreach (array, Traversable, etc...)&lt;br /&gt;
// We'll assume $db MDB2 connection is configured somewhere else&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$data &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= new &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;MDB2_Iterate&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$db&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'SELECT * FROM sometable'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// Callback to convert the data into a string that will be&lt;br /&gt;
// piped into the stream (any valid callback will do)&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$callback &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;create_function&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'$key, $value'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'return $key.&quot;=&quot;.implode('&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;', $value).&quot;\r\n&quot;;'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// Create the context for the stream&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$context &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;stream_context_create&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$protocol &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'subject' &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$data&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'callback' &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$callback&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)));&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fp &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fopen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$protocol&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'://subject'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'r'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$context&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;HTTP_Download&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;staticSend&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'resource' &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fp&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 id=&quot;toc9&quot;&gt; URL Examples&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;(assuming &amp;quot;&lt;tt&gt;foreach&lt;/tt&gt;&amp;quot; is the name of the registered protocol):&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&amp;quot;&lt;tt&gt;key&lt;/tt&gt;&amp;quot; and &amp;quot;&lt;tt&gt;value&lt;/tt&gt;&amp;quot; specify which of the key and value should be passed to the callback and in which order.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
    &lt;li&gt;&lt;tt&gt;foreach://key:value@subject&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
    &lt;li&gt;&lt;tt&gt;foreach://value:key@subject&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
    &lt;li&gt;&lt;tt&gt;foreach://key@subject&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
    &lt;li&gt;&lt;tt&gt;foreach://value@subject&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
    &lt;li&gt;&lt;tt&gt;foreach://subject&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;If not specified, &amp;quot;&lt;tt&gt;key:value&lt;/tt&gt;&amp;quot; will be assumed. So &lt;tt&gt;protocol://subject&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;
is equivalent to &lt;tt&gt;protocol://key:value@subject&lt;/tt&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 id=&quot;toc10&quot;&gt; Callback / Method in URL&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;To each of the URL examples above you can append a query string made up of. These substitute for the context options, possibly leading to more self-explanatory URLs.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
    &lt;li&gt;&lt;tt&gt;callback=function_name&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
    &lt;li&gt;&lt;tt&gt;callback=class::method&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
    &lt;li&gt;&lt;tt&gt;method=method_name&lt;/tt&gt; (method will be called only if value is an object)&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Example: &lt;tt&gt;foreach://value@subject?callback=serialize&lt;/tt&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 id=&quot;toc11&quot;&gt; TODO&lt;/h3&gt;&lt;br /&gt;
&lt;p&gt;* Possibly move the generic code from &lt;tt&gt;Stream_Iterate::register()&lt;/tt&gt; / &lt;tt&gt;unregiter()&lt;/tt&gt; methods to a PHP_Stream helper class/package to use as stream protocol registry.&lt;br /&gt;&lt;br /&gt;
 * Documentation / examples (besides the test suite)&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;

 </content:encoded>
 <dc:date>2008-03-05T14:04:19-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=534">
 <title>PEPr Proposal [534]: HTML::HTML_Form_Error</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=534</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        HTML::HTML_Form_Error&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/jan267&quot;&gt;Jacopo Andrea Nuzzi&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
With this application you can easily validate fields of your form.&lt;br /&gt;&lt;br /&gt;
 This class could also be used to validate query strings.&lt;br /&gt;&lt;br /&gt;
 &lt;br /&gt;&lt;br /&gt;
 You can use HTML_Form_Error with several languages:&lt;br /&gt;&lt;br /&gt;
 * English&lt;br /&gt;&lt;br /&gt;
 * Italian&lt;br /&gt;&lt;br /&gt;
 If you are interested to implement/improve or add a new translation feel free to send an email to jacoz@php.net
 </content:encoded>
 <dc:date>2008-03-02T04:14:55-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=532">
 <title>PEPr Proposal [532]: Validate::Validate_IT</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=532</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Validate::Validate_IT&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/jan267&quot;&gt;Jacopo Andrea Nuzzi&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Validation class for Italy.&lt;br /&gt;&lt;br /&gt;
This class provides methods to validate:&lt;br /&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Postal code (CAP)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Telephone number (and prefix)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Mobile number (and prefix)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Regions (and regions code)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Cities (and cities code)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Fiscal code&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;/ol&gt;
 </content:encoded>
 <dc:date>2008-02-23T09:36:16-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=523">
 <title>PEPr Proposal [523]: Web Services::Plesk</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=523</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Web Services::Plesk&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/ppadron&quot;&gt;Pedro Padron&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Plesk is a webhosting control panel. This package provides access to the Plesk API, using PHP Arrays to make the requests (XML strings are also accepted).&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
The package  must be used to send requests according to the official Plesk API RPC documentation. With it you can get domain data, create new accounts, manage services and many other operations.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
It will receive a well-formed request Array, convert it to XML and perform the request to the Plesk Agent.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
If the request was made using an Array, the response will be returned also as an Array. If it was sent using a XML string, the response will be returned as string also.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Why this package uses Arrays? Arrays in PHP are flexible and easy to manipulate. Please refer to the package documentation to see what it's all about.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This package IS NOT an implementation of Plesk API. This means you won&amp;amp;#8217;t find methods such as getAllDomains(). &lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
The reason why this package is not a full implementation of Plesk API is because of the flexibility that the API provides. In a single request you can perform several operations, which would save a precious time, and by creating a getAllDomains() method, for example, that flexibility would be lost.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Different applications have different integration needs, so the goal of Services_Plesk is to provide the lower layer of communication between the application and a Plesk server. This way, I recommend you to create your own functions using Services_Plesk to handle the requests to the Plesk server.
 </content:encoded>
 <dc:date>2008-01-06T22:53:12-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=514">
 <title>PEPr Proposal [514]: XML::SvgGrapher</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=514</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        XML::SvgGrapher&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/guil&quot;&gt;Guillaume Luchet&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This package permit to create SVG 1.1 graph.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Some functionalities (like curve filter, curve marker, curve visuals...) are customizable with plugins.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Currently the following visuals are managed:&lt;br /&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; line&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; polyline (a set of connected straight line segments)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; bar&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; circle&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; 3d pie&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;/ol&gt;
 </content:encoded>
 <dc:date>2007-10-23T06:43:33-05:00</dc:date>
</item>

</rdf:RDF>