<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Planetaki Planet PHP</title>
  <link href="http://planetaki.com/php" rel="alternate"/>
  <updated>2008-05-23T21:46:02+01:00</updated>
  <id>planetaki.com:1475</id>
  <author>
    <name>Planetaki - Planet PHP</name>
    <email>hello@planetaki.com</email>
  </author>
  <entry>
    <title>Community News: CodeWorks 2010</title>
    <updated>2010-09-09T13:48:16Z</updated>
    <published>2010-09-09T13:02:45Z</published>
    <id>planetaki.com:1475:post:95251729</id>
    <link href="http://www.phpdeveloper.org/news/15100" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95251729" rel="full"/>
    <content type="html">&lt;p&gt;
The &lt;a href="http://phparch.com" rel="nofollow" target="_blank"&gt;php|architect&lt;/a&gt; folks have posted the details about this year's &lt;a href="http://codeworks.phparch.com/" rel="nofollow" target="_blank"&gt;CodeWorks conference&lt;/a&gt; happening nine days in November and spread across five different cities all over the United States including Seattle, Orlando and Austin.
&lt;/p&gt;
&lt;blockquote&gt;
This year's theme is "Roadies, not Rock Stars". We are not rock stars, ninja's or guru's. We are code monkey's just like you and we do it because we love it. Just like you, we like to share what we have learned so others can benefit. Come join Marco Tabini, Ryan Stewart, Keith Casey and Cal Evans when we come to your town! Spend a day with us as we share with you what we've learned.
&lt;/blockquote&gt;
&lt;p&gt;
At each stop, this crew of four will present a one-day series of talks on things ranging from unit testing to APIs to working with OOP in PHP 5.3. You can find out more about the sessions that will be presented at your closest location on &lt;a href="http://codeworks.phparch.com" rel="nofollow" target="_blank"&gt;the CodeWorks site&lt;/a&gt;. You can also register and get in for the Early Bird price of $75 USD for a single ticket or $70 USD if you're part of a group.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15100</id>
      <link href="http://www.phpdeveloper.org/news/15100" rel="alternate"/>
      <title>Community News: CodeWorks 2010</title>
      <updated>2010-09-09T13:48:16Z</updated>
    </source>
  </entry>
  <entry>
    <title>Site News: Blast from the Past - One Year Ago in PHP</title>
    <updated>2010-09-09T13:48:16Z</updated>
    <published>2010-09-09T12:00:14Z</published>
    <id>planetaki.com:1475:post:95251730</id>
    <link href="http://www.phpdeveloper.org/news/15099" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95251730" rel="full"/>
    <content type="html">Here's what was popular in the PHP community one year ago today:&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13181" rel="nofollow" target="_blank"&gt;Steven Macintyre's Blog: Building a Modular Zend Framework CMS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13211" rel="nofollow" target="_blank"&gt;Community News: PHP Hits Top Three on TIOBE Programming Community Index&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13206" rel="nofollow" target="_blank"&gt;Komunitasweb.com: Showing the weather with PHP and Google Weather API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13208" rel="nofollow" target="_blank"&gt;NETTUTS.com: CodeIgniter From Scratch: Day 6 '" Login&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13173" rel="nofollow" target="_blank"&gt;Cal Evans' Blog: WinCache - Preliminary tests look REALLY good.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13177" rel="nofollow" target="_blank"&gt;Sudheer Satyanarayana's Blog: XML RPC Client Using PHP PEAR - A Real World Example: Ping Technorati&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13174" rel="nofollow" target="_blank"&gt;Ibuildings Blog: Migrating a dev team to an OO team (Part 1)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13188" rel="nofollow" target="_blank"&gt;Symfony Blog: FireSymfony - Debugging symfony applications inside Firebug&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13207" rel="nofollow" target="_blank"&gt;Zend Developer Zone: Extending Zend Server GUI '" Data Cache Information&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13209" rel="nofollow" target="_blank"&gt;DevShed: Lazy and Eager Loading in PHP 5&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13193" rel="nofollow" target="_blank"&gt;KnowledgeTree Blog: Why PHP Doesn't Suck&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13195" rel="nofollow" target="_blank"&gt;Andrea Giammarchi's Blog: PHP Serialization And Recursion Demystified&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13210" rel="nofollow" target="_blank"&gt;Symfony Blog: FireSymfony: Installing and Configuring the Plugin&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13199" rel="nofollow" target="_blank"&gt;DevShed: Cleaning up Array Elements, POST and GET Requests with Filters in PHP 5&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://phpdeveloper.org/news/13194" rel="nofollow" target="_blank"&gt;Community News: WordPress worm makes its way around the web&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15099</id>
      <link href="http://www.phpdeveloper.org/news/15099" rel="alternate"/>
      <title>Site News: Blast from the Past - One Year Ago in PHP</title>
      <updated>2010-09-09T13:48:16Z</updated>
    </source>
  </entry>
  <entry>
    <title>Customizable CAPTCHA</title>
    <updated>2010-09-09T07:51:39Z</updated>
    <published>2010-09-09T05:57:38Z</published>
    <id>planetaki.com:1475:post:95205744</id>
    <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/XB05u3Ue8Zk/6491-PHP-Generate-and-validate-CAPTCHA-images.html" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95205744" rel="full"/>
    <summary type="html">&lt;p&gt;Package:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.phpclasses.org/package/6491-PHP-Generate-and-validate-CAPTCHA-images.html" rel="nofollow" target="_blank"&gt;Customizable CAPTCHA&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Summary: &lt;/p&gt;</summary>
    <content type="html">&lt;div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Package:&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/package/6491-PHP-Generate-and-validate-CAPTCHA-images.html" rel="nofollow" target="_blank"&gt;Customizable CAPTCHA&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Summary: &lt;/div&gt;
&lt;div&gt;&lt;span name="description"&gt;Generate and validate CAPTCHA images&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Groups: &lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.phpclasses.org/browse/class/11.html" rel="nofollow" target="_blank"&gt;Graphics&lt;/a&gt;, &lt;a href="http://www.phpclasses.org/browse/class/8.html" rel="nofollow" target="_blank"&gt;PHP 5&lt;/a&gt;, &lt;a href="http://www.phpclasses.org/browse/class/78.html" rel="nofollow" target="_blank"&gt;Security&lt;/a&gt;, &lt;a href="http://www.phpclasses.org/browse/class/63.html" rel="nofollow" target="_blank"&gt;Validation&lt;/a&gt;
&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Author: &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/browse/author/601922.html" rel="nofollow" target="_blank"&gt;musthafa&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Description: &lt;/div&gt;
&lt;div&gt;This class can be used to Generate and validate CAPTCHA images.&lt;br&gt;&lt;br&gt;
It can generate an image with a random text made of hexadecimal digits.&lt;br&gt;&lt;br&gt;
The class stores the text in a session variable for posterior verification.&lt;br&gt;&lt;br&gt;
The image is served as the current script output in PNG format.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KAp-qleH1CnQHLqv1b5S0OZVIyk/0/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KAp-qleH1CnQHLqv1b5S0OZVIyk/0/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KAp-qleH1CnQHLqv1b5S0OZVIyk/1/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KAp-qleH1CnQHLqv1b5S0OZVIyk/1/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=XB05u3Ue8Zk:39g83AGNGkQ:yIl2AUoC8zA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=yIl2AUoC8zA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=XB05u3Ue8Zk:39g83AGNGkQ:7Q72WNTAKBA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=7Q72WNTAKBA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=XB05u3Ue8Zk:39g83AGNGkQ:qj6IDK7rITs" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=qj6IDK7rITs" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=XB05u3Ue8Zk:39g83AGNGkQ:gIN9vFwOqvQ" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?i=XB05u3Ue8Zk:39g83AGNGkQ:gIN9vFwOqvQ" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/phpclasses-xml/~4/XB05u3Ue8Zk" height="1" width="1" onload="resizeImage(this)"&gt;</content>
    <source>
      <id>http://feedproxy.google.com/~r/phpclasses-xml/~3/XB05u3Ue8Zk/6491-PHP-Generate-and-validate-CAPTCHA-images.html</id>
      <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/XB05u3Ue8Zk/6491-PHP-Generate-and-validate-CAPTCHA-images.html" rel="alternate"/>
      <title>Customizable CAPTCHA</title>
      <updated>2010-09-09T07:51:39Z</updated>
    </source>
  </entry>
  <entry>
    <title>32bit File Stats</title>
    <updated>2010-09-09T07:51:40Z</updated>
    <published>2010-09-09T05:11:15Z</published>
    <id>planetaki.com:1475:post:95205745</id>
    <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/ieDt3GaSorw/6481-PHP-Get-information-of-large-files-on-32-bit-systems.html" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95205745" rel="full"/>
    <summary type="html">&lt;p&gt;Package:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.phpclasses.org/package/6481-PHP-Get-information-of-large-files-on-32-bit-systems.html" rel="nofollow" target="_blank"&gt;32bit File Stats&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Summary: &lt;/p&gt;</summary>
    <content type="html">&lt;div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Package:&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/package/6481-PHP-Get-information-of-large-files-on-32-bit-systems.html" rel="nofollow" target="_blank"&gt;32bit File Stats&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Summary: &lt;/div&gt;
&lt;div&gt;&lt;span name="description"&gt;Get information of large files on 32 bit systems&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Groups: &lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.phpclasses.org/browse/class/17.html" rel="nofollow" target="_blank"&gt;Files and Folders&lt;/a&gt;, &lt;a href="http://www.phpclasses.org/browse/class/8.html" rel="nofollow" target="_blank"&gt;PHP 5&lt;/a&gt;
&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Author: &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/browse/author/220927.html" rel="nofollow" target="_blank"&gt;Jamie Curnow&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Description: &lt;/div&gt;
&lt;div&gt;This class can be used to get information of large files on 32 bit systems.&lt;br&gt;&lt;br&gt;
It provides several functions for retrieving information about files like the file size, last modified time, file or directory type and real path.&lt;br&gt;&lt;br&gt;
These functions work with files with size larger than 2TB (more than 31 bits) by using operating system calls or external commands to retrieve the requested file information.&lt;br&gt;&lt;br&gt;
It supports either Linux, BSD and Windows.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-jCjLLqqwZPKwuP7nP3XLZBAZKs/0/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-jCjLLqqwZPKwuP7nP3XLZBAZKs/0/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-jCjLLqqwZPKwuP7nP3XLZBAZKs/1/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-jCjLLqqwZPKwuP7nP3XLZBAZKs/1/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=ieDt3GaSorw:EDA67bef9wM:yIl2AUoC8zA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=yIl2AUoC8zA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=ieDt3GaSorw:EDA67bef9wM:7Q72WNTAKBA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=7Q72WNTAKBA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=ieDt3GaSorw:EDA67bef9wM:qj6IDK7rITs" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=qj6IDK7rITs" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=ieDt3GaSorw:EDA67bef9wM:gIN9vFwOqvQ" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?i=ieDt3GaSorw:EDA67bef9wM:gIN9vFwOqvQ" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/phpclasses-xml/~4/ieDt3GaSorw" height="1" width="1" onload="resizeImage(this)"&gt;</content>
    <source>
      <id>http://feedproxy.google.com/~r/phpclasses-xml/~3/ieDt3GaSorw/6481-PHP-Get-information-of-large-files-on-32-bit-systems.html</id>
      <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/ieDt3GaSorw/6481-PHP-Get-information-of-large-files-on-32-bit-systems.html" rel="alternate"/>
      <title>32bit File Stats</title>
      <updated>2010-09-09T07:51:40Z</updated>
    </source>
  </entry>
  <entry>
    <title>Lars Strojny's Blog: PHP Segfaulting with PECL/UUID and PECL/IMAGICK</title>
    <updated>2010-09-09T02:01:23Z</updated>
    <published>2010-09-08T19:17:13Z</published>
    <id>planetaki.com:1475:post:95176245</id>
    <link href="http://www.phpdeveloper.org/news/15098" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95176245" rel="full"/>
    <content type="html">&lt;p&gt;
If you've been using (or will be using) the &lt;a href="http://usrportage.de/archives/pecl/uuid" rel="nofollow" target="_blank"&gt;uuid&lt;/a&gt; and &lt;a href="http://usrportage.de/archives/pecl/imagick" rel="nofollow" target="_blank"&gt;imagick&lt;/a&gt; extensions for PHP, you might be able to save yourself a lot of headache by reading &lt;a href="http://usrportage.de/archives/922-PHP-segfaulting-with-pecluuid-and-peclimagick.html" rel="nofollow" target="_blank"&gt;this new post&lt;/a&gt; from &lt;i&gt;Lars Strojny&lt;/i&gt; about his segfault woes.
&lt;/p&gt;
&lt;blockquote&gt;
Ran into a bug yesterday, where &lt;a href="http://usrportage.de/archives/pecl/uuid" rel="nofollow" target="_blank"&gt;http://pecl.php.net/uuid&lt;/a&gt; in combination with &lt;a href="http://usrportage.de/archives/pecl/imagick" rel="nofollow" target="_blank"&gt;http://pecl.php.net/imagick&lt;/a&gt; yielded a segfault when using uuid_create().
&lt;/blockquote&gt;
&lt;p&gt;
After trying to trace it down with a backtrace and cachegrind results, he (and &lt;a href="http://valokuva.org/" rel="nofollow" target="_blank"&gt;Mikko&lt;/a&gt; &amp;amp; &lt;a href="http://blog.thepimp.net/" rel="nofollow" target="_blank"&gt;Pierre&lt;/a&gt;) found that both extensions were built against the libuuid.so.1 file. While that wasn't the issue directly, they did find a work-around that helped the issue - renaming some ini files so uuid was loaded first.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15098</id>
      <link href="http://www.phpdeveloper.org/news/15098" rel="alternate"/>
      <title>Lars Strojny's Blog: PHP Segfaulting with PECL/UUID and PECL/IMAGICK</title>
      <updated>2010-09-09T02:01:23Z</updated>
    </source>
  </entry>
  <entry>
    <title>Till Klampaeckel's Blog: Selenium vs. Saucelenium</title>
    <updated>2010-09-09T02:01:23Z</updated>
    <published>2010-09-08T18:48:03Z</published>
    <id>planetaki.com:1475:post:95176246</id>
    <link href="http://www.phpdeveloper.org/news/15097" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95176246" rel="full"/>
    <content type="html">&lt;p&gt;
In &lt;a href="http://till.klampaeckel.de/blog/archives/111-Selenium-Saucelenium-installation-and-dbus-xorg-woes.html" rel="nofollow" target="_blank"&gt;this new post&lt;/a&gt; to his blog &lt;i&gt;Till Klampaeckel&lt;/i&gt; talks about two tools for front-end interface testing - Selenium and &lt;a href="http://github.com/saucelabs/saucelenium" rel="nofollow" target="_blank"&gt;Saucelenium&lt;/a&gt; - and how he used the latter in his application testing.
&lt;/p&gt;
&lt;blockquote&gt;
Selenium and Saucelenium have the same root - in fact Saucelenium is a Selenium fork. While the Selenium project seems to focus on 2.x currently, stable 1.x  development seems to really happen at Saucelabs. That is if you call a commit from January 22nd of this year active development.
&lt;/blockquote&gt;
&lt;p&gt;
He talks about the installation process (guided by the README from &lt;a href="http://github.com/till/saucelenium" rel="nofollow" target="_blank"&gt;his fork&lt;/a&gt;) and the tool he had to install to get it to work for him - xserver-xorg. He includes a sample test to give you an idea of what can be done with the testing tool. It loads the page imitating Chrome and looks for certain text on two different pages as well as check one of the links.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15097</id>
      <link href="http://www.phpdeveloper.org/news/15097" rel="alternate"/>
      <title>Till Klampaeckel's Blog: Selenium vs. Saucelenium</title>
      <updated>2010-09-09T02:01:23Z</updated>
    </source>
  </entry>
  <entry>
    <title>Mike Bernat's Blog: The Problem with Wordpress and Drupal</title>
    <updated>2010-09-09T02:01:23Z</updated>
    <published>2010-09-08T17:51:43Z</published>
    <id>planetaki.com:1475:post:95176250</id>
    <link href="http://www.phpdeveloper.org/news/15096" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95176250" rel="full"/>
    <content type="html">&lt;p&gt;
&lt;i&gt;Mike Bernat&lt;/i&gt; has &lt;a href="http://www.mikebernat.com/blog/The_Problem_with_Wordpress_and_Drupal" rel="nofollow" target="_blank"&gt;a new post&lt;/a&gt; to his blog today talking about what he considers the problem to be with both &lt;a href="http://wordpress.org" rel="nofollow" target="_blank"&gt;WordPress&lt;/a&gt; and &lt;a href="http://drupal.org" rel="nofollow" target="_blank"&gt;Drupal&lt;/a&gt; - despite doing what they do well, they're not good examples for developers.
&lt;/p&gt;
&lt;blockquote&gt;
If a young developer said to you 'I want to learn by looking at existing code from a successful PHP project. Can you point me in the right direction?' Would you ever feel comfortable sitting them down in front of Drupal or WordPress code? What if they responded by saying: 'But they are the most well-known free, and open, products that use PHP. They're obviously doing something right, so why shouldn't I try to learn from their example?'
&lt;/blockquote&gt;
&lt;p&gt;
In his opinion, developers should set their sights elsewhere if they're looking for good examples. Both tools use what he calls the "old way architecture" that could hold developers back from some of the wonderful new enhancements that the language has to offer and best practices that might not be found in their codebase.
&lt;/p&gt;
&lt;blockquote&gt;
While some of the techniques used in WordPress/Drupal are undoubtedly solid and still state-of-the-art, the majority of the frameworks are ancient in web-development terms. PHP is growing as a language, and I for one want to see it regain some of the respect its lost.
&lt;/blockquote&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15096</id>
      <link href="http://www.phpdeveloper.org/news/15096" rel="alternate"/>
      <title>Mike Bernat's Blog: The Problem with Wordpress and Drupal</title>
      <updated>2010-09-09T02:01:23Z</updated>
    </source>
  </entry>
  <entry>
    <title>Rob Allen's Blog: On Exceptions</title>
    <updated>2010-09-09T02:01:23Z</updated>
    <published>2010-09-08T16:06:03Z</published>
    <id>planetaki.com:1475:post:95176249</id>
    <link href="http://www.phpdeveloper.org/news/15095" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95176249" rel="full"/>
    <content type="html">&lt;p&gt;
&lt;i&gt;Rob Allen&lt;/i&gt; caught an interesting feature of the proposed &lt;a href="http://framework.zend.com/wiki/display/ZFDEV2/Proposal+for+Exceptions+in+ZF2?showComments=false" rel="nofollow" target="_blank"&gt;exception handling in the Zend Framework v2&lt;/a&gt; - the ability to throw an exception and catch it at the interface level, not just the class.
&lt;/p&gt;
&lt;blockquote&gt;
I've been reading the &lt;a href="http://framework.zend.com/wiki/display/ZFDEV2/Proposal+for+Exceptions+in+ZF2?showComments=false" rel="nofollow" target="_blank"&gt;Proposal for Exceptions in ZF2&lt;/a&gt; and like it. One thing that caught my attention was that it suggests that you can catch an interface. I hadn't heard of that ability before, so I pulled out my trusty text editor to have a play.
&lt;/blockquote&gt;
&lt;p&gt;
He creates a basic bit of code - an interface for the exceptions, an SPL exception class and a normal exceptions class - as well as a basic generic class that throws exceptions based on each. The result is that catching exceptions for the class types works as well as catching it on the "ExceptionInterface" level too.
&lt;/p&gt;
&lt;blockquote&gt;
We now have the ability with ZF2 to be able to use different exception classes to represent different error types rather than using string comparison and, at the same time, we can have a single catch() for when we don't need that level of granularity.
&lt;/blockquote&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15095</id>
      <link href="http://www.phpdeveloper.org/news/15095" rel="alternate"/>
      <title>Rob Allen's Blog: On Exceptions</title>
      <updated>2010-09-09T02:01:23Z</updated>
    </source>
  </entry>
  <entry>
    <title>Chris Hartjes' Blog: Twitter Asks: Continuous Integration Landscape for PHP Developers</title>
    <updated>2010-09-09T02:01:23Z</updated>
    <published>2010-09-08T15:42:42Z</published>
    <id>planetaki.com:1475:post:95176253</id>
    <link href="http://www.phpdeveloper.org/news/15094" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95176253" rel="full"/>
    <content type="html">&lt;p&gt;
After asking for topics to blog about on Twitter, &lt;i&gt;Chris Hartjes&lt;/i&gt; has posted the first response to the suggestions - a look at &lt;a href="http://www.littlehart.net/atthekeyboard/2010/09/07/twitter-asks-continuous-integration-landscape-for-php-developers/" rel="nofollow" target="_blank"&gt;continuous integration&lt;/a&gt; (CI) in PHP environments.
&lt;/p&gt;
&lt;blockquote&gt;
For those not familiar with the concept of Continuous Integration, I can sum it up with one very glib phrase: it lets you break your code before you buy it. [...] If I were to design a Continuous Integration (hereafter referred to as CI) system, what would it look like?
&lt;/blockquote&gt;
&lt;p&gt;
His requirements include version control integration, easy unit test execution, a web interface and be able to automate it all at a moment's notice. He talks about the importance of unit testing in CI and the tools that are available for the job like &lt;a href="http://phpundercontrol.org/" rel="nofollow" target="_blank"&gt;phpUnderControl&lt;/a&gt;, &lt;a href="http://code.google.com/p/xinc/" rel="nofollow" target="_blank"&gt;Xinc&lt;/a&gt; and &lt;a href="http://hudson-ci.org/" rel="nofollow" target="_blank"&gt;Hudson&lt;/a&gt;. He also looks at the build process, from check-in through a successful build result and how he handles bugs when they do pop up.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15094</id>
      <link href="http://www.phpdeveloper.org/news/15094" rel="alternate"/>
      <title>Chris Hartjes' Blog: Twitter Asks: Continuous Integration Landscape for PHP Developers</title>
      <updated>2010-09-09T02:01:23Z</updated>
    </source>
  </entry>
  <entry>
    <title>Net_IPv4 1.3.4</title>
    <updated>2010-09-08T14:01:16Z</updated>
    <published>2010-09-08T15:32:40Z</published>
    <id>planetaki.com:1475:post:95071044</id>
    <link href="http://pear.php.net/package/Net_IPv4/download/1.3.4/" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95071044" rel="full"/>
    <content type="html">QA Release&lt;br&gt;
* Fixed Bug #17800 fixed typo in check</content>
    <source>
      <id>http://pear.php.net/package/Net_IPv4/download/1.3.4/</id>
      <link href="http://pear.php.net/package/Net_IPv4/download/1.3.4/" rel="alternate"/>
      <title>Net_IPv4 1.3.4</title>
      <updated>2010-09-08T14:01:16Z</updated>
    </source>
  </entry>
  <entry>
    <title>Zend Developer Zone: PHP, Flex and Mobile</title>
    <updated>2010-09-09T02:01:23Z</updated>
    <published>2010-09-08T14:08:48Z</published>
    <id>planetaki.com:1475:post:95176254</id>
    <link href="http://www.phpdeveloper.org/news/15093" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95176254" rel="full"/>
    <content type="html">&lt;p&gt;
On the Zend Developer Zone today there's &lt;a href="http://devzone.zend.com/article/12534-PHP-Flex-and-Mobile" rel="nofollow" target="_blank"&gt;a new post&lt;/a&gt; from &lt;i&gt;Cal Evans&lt;/i&gt; about an article from the minds of &lt;i&gt;Ryan Stewart&lt;/i&gt; (Adobe) and &lt;i&gt;Kevin Schroeder&lt;/i&gt; (Zend) about the powerful combination of Flex and PHP.
&lt;/p&gt;
&lt;blockquote&gt;
These two have gotten together again to show how you can use Flex (Flash, ActionScript, AIR, you know the drill) and Zend Framework (&lt;a href="http://devzone.zend.com/article/12518-Zend-Framework-is-a-BOSSie-Award-Winner" rel="nofollow" target="_blank"&gt;Winner of a BOSSie&lt;/a&gt;) Their new article "Flex and PHP" from the most recent issue of Flash &amp;amp; Flex magazine, talks about using the same controllers and actions for returning both HTML and JSON. This concept of programming for multiple destinations is important in a web where your API may be more important than your HTML.
&lt;/blockquote&gt;
&lt;p&gt;
You can get the full article &lt;a href="http://devzone.zend.com/content/12534/Flex-and-PHP-PHP-Development-on-Mobile.pdf" rel="nofollow" target="_blank"&gt;as a PDF&lt;/a&gt; from the DevZone site. It's an extended tutorial on getting Flex and PHP to work together via multiple formats (similar to what &lt;i&gt;Kevin&lt;/i&gt; presented on &lt;a href="http://phpdeveloper.org/news/15080" rel="nofollow" target="_blank"&gt;his blog&lt;/a&gt; recently.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15093</id>
      <link href="http://www.phpdeveloper.org/news/15093" rel="alternate"/>
      <title>Zend Developer Zone: PHP, Flex and Mobile</title>
      <updated>2010-09-09T02:01:23Z</updated>
    </source>
  </entry>
  <entry>
    <title>Stanislav Malyshev's Blog: Adding new extensions to Zend Studio</title>
    <updated>2010-09-08T14:01:31Z</updated>
    <published>2010-09-08T13:32:31Z</published>
    <id>planetaki.com:1475:post:95071096</id>
    <link href="http://www.phpdeveloper.org/news/15092" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95071096" rel="full"/>
    <content type="html">&lt;p&gt;
In a new post to his blog &lt;i&gt;Stanislav Malyshev&lt;/i&gt; talks about how Zend Studio users can &lt;a href="http://php100.wordpress.com/2010/09/08/adding-new-exts-to-zend-studio/" rel="nofollow" target="_blank"&gt;get the tool to recognize new extensions&lt;/a&gt; by adding in stubs with PHPDocumentor markup.
&lt;/p&gt;
&lt;blockquote&gt;
If you have some extension, create stub file with PHPDOC descriptions [...] for each extension function, Studio will know to pick it up. You can put this file into Studio's prototypes directory - easiest way to find it is just write something like chdir() anywhere, select the name and press F3, the directory of the file that you'll get is the one you need.
&lt;/blockquote&gt;
&lt;p&gt;
Not wanting to have to generate all of the stubs himself, he created the &lt;a href="http://github.com/smalyshev/Reflector" rel="nofollow" target="_blank"&gt;Reflector&lt;/a&gt; script that will, when pointed at an extension, create the stub file with definitions for each method it can use. There's also the &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.pdt/plugins/org.eclipse.php.core/Resources/language/generate.php?root=Tools_Project&amp;amp;view=markup" rel="nofollow" target="_blank"&gt;generator script&lt;/a&gt; that's a part of Zend Studio that works similarly.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15092</id>
      <link href="http://www.phpdeveloper.org/news/15092" rel="alternate"/>
      <title>Stanislav Malyshev's Blog: Adding new extensions to Zend Studio</title>
      <updated>2010-09-08T14:01:31Z</updated>
    </source>
  </entry>
  <entry>
    <title>Five tips for speeding up Eclipse PDT and Zend Studio - Zend Developer Zone</title>
    <updated>2010-09-08T14:01:31Z</updated>
    <published>2010-09-08T12:12:00Z</published>
    <id>planetaki.com:1475:post:95071100</id>
    <link href="http://devzone.zend.com/article/12521-Five-tips-for-speeding-up-Eclipse-PDT-and-Zend-Studio" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95071100" rel="full"/>
    <content type="html">Eclipse Helios (3.6) and Zend Studio 7.1 (and above) include a new version of Eclipse PDT, labeled 2.2. This new release uses a new repository for storing code reference information. With these simple tips you can significantly improve the performance of this repository which will speed up code completion, searching for definitions, type hierarchy views and more.</content>
    <source>
      <id>http://devzone.zend.com/article/12521-Five-tips-for-speeding-up-Eclipse-PDT-and-Zend-Studio</id>
      <link href="http://devzone.zend.com/article/12521-Five-tips-for-speeding-up-Eclipse-PDT-and-Zend-Studio" rel="alternate"/>
      <title>Five tips for speeding up Eclipse PDT and Zend Studio - Zend Developer Zone</title>
      <updated>2010-09-08T14:01:31Z</updated>
    </source>
  </entry>
  <entry>
    <title>Community News: Latest Releases from PHPClasses.org</title>
    <updated>2010-09-08T14:01:31Z</updated>
    <published>2010-09-08T12:03:50Z</published>
    <id>planetaki.com:1475:post:95071098</id>
    <link href="http://www.phpdeveloper.org/news/15091" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95071098" rel="full"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/yrJRtgAir0E/6478-PHP-Compare-two-images-to-find-the-differences.html" rel="nofollow" target="_blank"&gt;Image compare&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/yvjh0MogefY/6480-PHP-Calculate-the-distance-between-Earth-two-points.html" rel="nofollow" target="_blank"&gt;Haversine&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/EdH_tkYxf28/6427-PHP-Search-for-guitar-chords-using-Guitar-Chord-API.html" rel="nofollow" target="_blank"&gt;Guitar Chord API class&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/1w_HyHZ7Kg4/6438-PHP-Find-prime-numbers-with-Sieve-of-Atkin-algorithm.html" rel="nofollow" target="_blank"&gt;Atkin&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/hS2yWdwwONo/6456-PHP-Compute-the-common-mask-from-multiple-IP-addresses.html" rel="nofollow" target="_blank"&gt;IP Net Calculator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/LloU59iFKYc/6447-PHP-Visual-editor-to-let-the-user-crop-images.html" rel="nofollow" target="_blank"&gt;Image Crop&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/JOGJp_aaYD4/6416-PHP-Populate-a-MySQL-database-with-random-data.html" rel="nofollow" target="_blank"&gt;DBPopulator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/cL2ZydDoMpQ/6485-PHP-Generate-image-thumbnails.html" rel="nofollow" target="_blank"&gt;Thumbnail images Raj&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/JOGJp_aaYD4/6416-PHP-Populate-a-MySQL-database-with-random-data.html" rel="nofollow" target="_blank"&gt;DB Populator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/4uW2OkIjEzQ/6484-PHP-Show-paginated-listings-updated-using-AJAX.html" rel="nofollow" target="_blank"&gt;Paginatorfer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/PaI6Dsw8I6o/6449-PHP-Generate-a-series-of-values-that-decrease-smoothly.html" rel="nofollow" target="_blank"&gt;Smooth Decrease Class&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/xi9AoNtW6uo/6460-PHP-Browse-images-like-a-first-person-view-game.html" rel="nofollow" target="_blank"&gt;First Person View&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/MJxc3I75Qdc/6490-PHP-Access-to-a-MySQL-database-using-a-singleton.html" rel="nofollow" target="_blank"&gt;Simple and small DB class&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/xykfykR3IoQ/6465-PHP-Encode-data-inside-PNG-images.html" rel="nofollow" target="_blank"&gt;PNG Data Encoder and Container&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://feedproxy.google.com/~r/phpclasses-xml/~3/xOB-_dZbPIU/6483-PHP-Compare-the-schemata-of-two-MySQL-databases.html" rel="nofollow" target="_blank"&gt;Database Comparator&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15091</id>
      <link href="http://www.phpdeveloper.org/news/15091" rel="alternate"/>
      <title>Community News: Latest Releases from PHPClasses.org</title>
      <updated>2010-09-08T14:01:31Z</updated>
    </source>
  </entry>
  <entry>
    <title>Project Importer v4.1 Release - Keith Casey</title>
    <updated>2010-09-09T02:01:24Z</updated>
    <published>2010-09-08T11:54:47Z</published>
    <id>planetaki.com:1475:post:95176257</id>
    <link href="http://CaseySoftware.com/blog/project-importer-v41-release" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95176257" rel="full"/>
    <summary type="html">&lt;p&gt;After a major cleanup of the structure and logic due to a handful of issues,  v4.1 of the Project Importer is now available!&lt;/p&gt;&lt;p&gt;You can download the latest version here:&lt;br&gt;&lt;a href="https://sourceforge.net/projects/web2project-mod/files/Project-Importer/" rel="nofollow" target="_blank"&gt;https://sourceforge.net/projects/web2project-mod/files/Project-Importer/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The purpose of the Project Importer is to allow users to import their project plans from other systems. Currently Microsoft Project and WBS Gantt Chart Pro are supported.&lt;br&gt;
The significant changes in this release include:&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;After a major cleanup of the structure and logic due to a handful of issues,  v4.1 of the Project Importer is now available!&lt;/p&gt;
&lt;p&gt;You can download the latest version here:&lt;br&gt;&lt;a href="https://sourceforge.net/projects/web2project-mod/files/Project-Importer/" rel="nofollow" target="_blank"&gt;https://sourceforge.net/projects/web2project-mod/files/Project-Importer/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The purpose of the Project Importer is to allow users to import their project plans from other systems. Currently Microsoft Project and WBS Gantt Chart Pro are supported.&lt;br&gt;
The significant changes in this release include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a major issue where dependencies weren't being imported properly or sometimes at all.&lt;/li&gt;
&lt;li&gt;Added a tweak to the MS Project processor to make sure the project title is retrieved properly.&lt;/li&gt;
&lt;li&gt;Fixed an issue where the Project Start Date was not set properly in the MS Project import&lt;/li&gt;
&lt;li&gt;Tweaked the import process so that if there's no Company match, it default's to the current User's Company. This resolves the issue where a Project could accidentally get assigned to no Company and therefore disappear due to permissions.&lt;/li&gt;
&lt;li&gt;Changed the licensing to align with the coming web2project license shift.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;There is a goal to support additional file type imports. At present, CSV - as an Excel export - is one option but is the most difficult due to a lack of formal/official column/field structure that a user could create. If anyone has any suggestions, please feel free to &lt;a href="http://forums.web2project.net/" rel="nofollow" target="_blank"&gt;share them in our forums&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Project Importer can be downloaded here: &lt;a href="https://sourceforge.net/projects/web2project-mod/files/Project-Importer/" rel="nofollow" target="_blank"&gt;https://sourceforge.net/projects/web2project-mod/files/Project-Importer/&lt;/a&gt;&lt;/p&gt;</content>
    <source>
      <id>http://CaseySoftware.com/blog/project-importer-v41-release</id>
      <link href="http://CaseySoftware.com/blog/project-importer-v41-release" rel="alternate"/>
      <title>Project Importer v4.1 Release - Keith Casey</title>
      <updated>2010-09-09T02:01:24Z</updated>
    </source>
  </entry>
  <entry>
    <title>Adding new extensions to Zend Studio - PHP 10.0 Blog</title>
    <updated>2010-09-08T08:10:42Z</updated>
    <published>2010-09-08T07:11:02Z</published>
    <id>planetaki.com:1475:post:95025357</id>
    <link href="http://php100.wordpress.com/2010/09/08/adding-new-exts-to-zend-studio/" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95025357" rel="full"/>
    <summary type="html">&lt;p&gt;I am using &lt;a href="http://zend.com/studio" rel="nofollow" target="_blank"&gt;Zend Studio&lt;/a&gt; for my everyday PHP work, and I like it. I know many others do too, or use PDT. It has one very cool &amp;ndash; though not widely known &amp;ndash; feature that allows you you to add unknown extensions to code completion. I.e., if you have some extension, create stub file with PHPDOC descriptions &amp;ndash; i.e. something like this:&lt;/p&gt;&lt;p&gt;for each extension function, Studio will know to pick it up. You can put this file into Studio&amp;rsquo;s prototypes directory &amp;ndash; easiest way to find it is just write something like chdir() anywhere, select the name and press F3, the directory of the file that you&amp;rsquo;ll get is the one you need.&lt;/p&gt;&lt;p&gt;However, the problem is how to create this file. E.g., I&amp;rsquo;m doing some work with MongoDB lately, and PHP has great &lt;a href="http://us.php.net/mongo" rel="nofollow" target="_blank"&gt;Mongo&lt;/a&gt; extension &amp;ndash; which Studio doesn&amp;rsquo;t know yet. So how do I create those stubs? Obviously, I am too lazy to manually write them. I went to look for a tool that would allow me to make one &amp;ndash; and found none. At least not in 15 minutes I spent looking, so I decided to write my own.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;I am using &lt;a href="http://zend.com/studio" rel="nofollow" target="_blank"&gt;Zend Studio&lt;/a&gt; for my everyday PHP work, and I like it. I know many others do too, or use PDT. It has one very cool &amp;ndash; though not widely known &amp;ndash; feature that allows you you to add unknown extensions to code completion. I.e., if you have some extension, create stub file with PHPDOC descriptions &amp;ndash; i.e. something like this:&lt;/p&gt;
&lt;pre&gt;/**
 * Do stuff
 * @param string $arg
 * @return array
 */
 function dostuff($arg) {}&lt;/pre&gt;
&lt;p&gt;for each extension function, Studio will know to pick it up. You can put this file into Studio&amp;rsquo;s prototypes directory &amp;ndash; easiest way to find it is just write something like chdir() anywhere, select the name and press F3, the directory of the file that you&amp;rsquo;ll get is the one you need.&lt;/p&gt;
&lt;p&gt;However, the problem is how to create this file. E.g., I&amp;rsquo;m doing some work with MongoDB lately, and PHP has great &lt;a href="http://us.php.net/mongo" rel="nofollow" target="_blank"&gt;Mongo&lt;/a&gt; extension &amp;ndash; which Studio doesn&amp;rsquo;t know yet. So how do I create those stubs? Obviously, I am too lazy to manually write them. I went to look for a tool that would allow me to make one &amp;ndash; and found none. At least not in 15 minutes I spent looking, so I decided to write my own.&lt;/p&gt;
&lt;p&gt;What came out is the &lt;a href="http://github.com/smalyshev/Reflector" rel="nofollow" target="_blank"&gt;Reflector&lt;/a&gt;. It uses PHP &lt;a href="http://php.net/reflection" rel="nofollow" target="_blank"&gt;reflection&lt;/a&gt; and PHP&amp;rsquo;s &lt;a href="http://svn.php.net/viewvc/phpdoc/" rel="nofollow" target="_blank"&gt;manual XML sources&lt;/a&gt; in order to generate stub file (see example &lt;a href="http://github.com/smalyshev/Reflector/blob/master/mongo.php" rel="nofollow" target="_blank"&gt;mongo.php&lt;/a&gt; on git to check what comes out). Right now it&amp;rsquo;s not very smart and handles only classes/methods, not functions (probably will fix that soon), but maybe it will be useful to somebody.&lt;/p&gt;
&lt;p&gt;Or maybe somebody points me to a tool that does that even better in comments &lt;img src="http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" onload="resizeImage(this)"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Roy Ganor (who is leading the Zend Studio project) in comments pointed me to the &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.pdt/plugins/org.eclipse.php.core/Resources/language/generate.php?root=Tools_Project&amp;amp;view=markup" rel="nofollow" target="_blank"&gt;source of the Studio generator script&lt;/a&gt;. It will generate stubs for all extensions you have, as I can see. Try it out. Thanks, Roy!&lt;/p&gt;
&lt;br&gt; Tagged: &lt;a href="http://php100.wordpress.com/tag/extensions/" rel="nofollow" target="_blank"&gt;extensions&lt;/a&gt;, &lt;a href="http://php100.wordpress.com/tag/php/" rel="nofollow" target="_blank"&gt;PHP&lt;/a&gt;, &lt;a href="http://php100.wordpress.com/tag/reflection/" rel="nofollow" target="_blank"&gt;reflection&lt;/a&gt;, &lt;a href="http://php100.wordpress.com/tag/reflector/" rel="nofollow" target="_blank"&gt;reflector&lt;/a&gt;, &lt;a href="http://php100.wordpress.com/tag/zend-studio/" rel="nofollow" target="_blank"&gt;Zend Studio&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php100.wordpress.com/148/" target="_blank"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php100.wordpress.com/148/" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php100.wordpress.com/148/" target="_blank"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php100.wordpress.com/148/" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/php100.wordpress.com/148/" target="_blank"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/php100.wordpress.com/148/" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/php100.wordpress.com/148/" target="_blank"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/php100.wordpress.com/148/" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php100.wordpress.com/148/" target="_blank"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php100.wordpress.com/148/" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php100.wordpress.com/148/" target="_blank"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php100.wordpress.com/148/" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php100.wordpress.com/148/" target="_blank"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php100.wordpress.com/148/" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php100.wordpress.com&amp;amp;blog=480516&amp;amp;post=148&amp;amp;subd=php100&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" onload="resizeImage(this)"&gt;</content>
    <source>
      <id>http://php100.wordpress.com/2010/09/08/adding-new-exts-to-zend-studio/</id>
      <link href="http://php100.wordpress.com/2010/09/08/adding-new-exts-to-zend-studio/" rel="alternate"/>
      <title>Adding new extensions to Zend Studio - PHP 10.0 Blog</title>
      <updated>2010-09-08T08:10:42Z</updated>
    </source>
  </entry>
  <entry>
    <title>Dwords</title>
    <updated>2010-09-09T07:51:40Z</updated>
    <published>2010-09-08T06:59:26Z</published>
    <id>planetaki.com:1475:post:95025333</id>
    <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/iwOY_dAUIBw/6473-PHP-Generate-stems-from-words-using-UTF-8-encoding.html" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95025333" rel="full"/>
    <summary type="html">&lt;p&gt;Package:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.phpclasses.org/package/6473-PHP-Generate-stems-from-words-using-UTF-8-encoding.html" rel="nofollow" target="_blank"&gt;Dwords&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Summary: &lt;/p&gt;</summary>
    <content type="html">&lt;div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Package:&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/package/6473-PHP-Generate-stems-from-words-using-UTF-8-encoding.html" rel="nofollow" target="_blank"&gt;Dwords&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Summary: &lt;/div&gt;
&lt;div&gt;&lt;span name="description"&gt;Generate stems from words using UTF-8 encoding&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Groups: &lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.phpclasses.org/browse/class/8.html" rel="nofollow" target="_blank"&gt;PHP 5&lt;/a&gt;, &lt;a href="http://www.phpclasses.org/browse/class/25.html" rel="nofollow" target="_blank"&gt;Text processing&lt;/a&gt;
&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Author: &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/browse/author/781695.html" rel="nofollow" target="_blank"&gt;denis&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Description: &lt;/div&gt;
&lt;div&gt;This class can be used to generate stems from words encoded using UTF-8.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eo5L_Z8H_yaXgM7u4qyd59HNR7U/0/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eo5L_Z8H_yaXgM7u4qyd59HNR7U/0/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eo5L_Z8H_yaXgM7u4qyd59HNR7U/1/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eo5L_Z8H_yaXgM7u4qyd59HNR7U/1/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=iwOY_dAUIBw:Y72kinWwuQM:yIl2AUoC8zA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=yIl2AUoC8zA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=iwOY_dAUIBw:Y72kinWwuQM:7Q72WNTAKBA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=7Q72WNTAKBA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=iwOY_dAUIBw:Y72kinWwuQM:qj6IDK7rITs" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=qj6IDK7rITs" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=iwOY_dAUIBw:Y72kinWwuQM:gIN9vFwOqvQ" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?i=iwOY_dAUIBw:Y72kinWwuQM:gIN9vFwOqvQ" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/phpclasses-xml/~4/iwOY_dAUIBw" height="1" width="1" onload="resizeImage(this)"&gt;</content>
    <source>
      <id>http://feedproxy.google.com/~r/phpclasses-xml/~3/iwOY_dAUIBw/6473-PHP-Generate-stems-from-words-using-UTF-8-encoding.html</id>
      <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/iwOY_dAUIBw/6473-PHP-Generate-stems-from-words-using-UTF-8-encoding.html" rel="alternate"/>
      <title>Dwords</title>
      <updated>2010-09-09T07:51:40Z</updated>
    </source>
  </entry>
  <entry>
    <title>Dwords</title>
    <updated>2010-09-09T07:51:40Z</updated>
    <published>2010-09-08T06:59:26Z</published>
    <id>planetaki.com:1475:post:95205748</id>
    <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/1CZPfKti3ZU/6473-PHP-Generate-stems-from-UTF-8-encoded-words.html" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95205748" rel="full"/>
    <summary type="html">&lt;p&gt;Package:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.phpclasses.org/package/6473-PHP-Generate-stems-from-UTF-8-encoded-words.html" rel="nofollow" target="_blank"&gt;Dwords&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Summary: &lt;/p&gt;</summary>
    <content type="html">&lt;div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Package:&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/package/6473-PHP-Generate-stems-from-UTF-8-encoded-words.html" rel="nofollow" target="_blank"&gt;Dwords&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Summary: &lt;/div&gt;
&lt;div&gt;&lt;span name="description"&gt;Generate stems from UTF-8 encoded words&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Groups: &lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.phpclasses.org/browse/class/8.html" rel="nofollow" target="_blank"&gt;PHP 5&lt;/a&gt;, &lt;a href="http://www.phpclasses.org/browse/class/25.html" rel="nofollow" target="_blank"&gt;Text processing&lt;/a&gt;
&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Author: &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/browse/author/781695.html" rel="nofollow" target="_blank"&gt;denis&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Description: &lt;/div&gt;
&lt;div&gt;This class can be used to generate stems from words encoded using UTF-8.&lt;br&gt;&lt;br&gt;
It takes a text string with words encoded using UTF-8 and converts it into stems strings like the soundex algorithm does, so similar sounding words result in the same word.&lt;br&gt;&lt;br&gt;
The class supports both English and Cyrillic words.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X-Cj_KA019hc6ygySyldO1Kzm-c/0/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X-Cj_KA019hc6ygySyldO1Kzm-c/0/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X-Cj_KA019hc6ygySyldO1Kzm-c/1/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X-Cj_KA019hc6ygySyldO1Kzm-c/1/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=1CZPfKti3ZU:4InDKUnD2Dk:yIl2AUoC8zA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=yIl2AUoC8zA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=1CZPfKti3ZU:4InDKUnD2Dk:7Q72WNTAKBA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=7Q72WNTAKBA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=1CZPfKti3ZU:4InDKUnD2Dk:qj6IDK7rITs" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=qj6IDK7rITs" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=1CZPfKti3ZU:4InDKUnD2Dk:gIN9vFwOqvQ" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?i=1CZPfKti3ZU:4InDKUnD2Dk:gIN9vFwOqvQ" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/phpclasses-xml/~4/1CZPfKti3ZU" height="1" width="1" onload="resizeImage(this)"&gt;</content>
    <source>
      <id>http://feedproxy.google.com/~r/phpclasses-xml/~3/1CZPfKti3ZU/6473-PHP-Generate-stems-from-UTF-8-encoded-words.html</id>
      <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/1CZPfKti3ZU/6473-PHP-Generate-stems-from-UTF-8-encoded-words.html" rel="alternate"/>
      <title>Dwords</title>
      <updated>2010-09-09T07:51:40Z</updated>
    </source>
  </entry>
  <entry>
    <title>PDF print</title>
    <updated>2010-09-08T08:10:27Z</updated>
    <published>2010-09-08T06:56:48Z</published>
    <id>planetaki.com:1475:post:95025332</id>
    <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/zc-8e9w6cjM/6464-PHP-Alter-a-PDF-document-to-make-it-print-when-opened.html" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95025332" rel="full"/>
    <summary type="html">&lt;p&gt;Package:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.phpclasses.org/package/6464-PHP-Alter-a-PDF-document-to-make-it-print-when-opened.html" rel="nofollow" target="_blank"&gt;PDF print&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Summary: &lt;/p&gt;</summary>
    <content type="html">&lt;div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Package:&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/package/6464-PHP-Alter-a-PDF-document-to-make-it-print-when-opened.html" rel="nofollow" target="_blank"&gt;PDF print&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Summary: &lt;/div&gt;
&lt;div&gt;&lt;span name="description"&gt;Alter a PDF document to make it print when opened&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Groups: &lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.phpclasses.org/browse/class/17.html" rel="nofollow" target="_blank"&gt;Files and Folders&lt;/a&gt;, &lt;a href="http://www.phpclasses.org/browse/class/8.html" rel="nofollow" target="_blank"&gt;PHP 5&lt;/a&gt;
&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Author: &lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.phpclasses.org/browse/author/928739.html" rel="nofollow" target="_blank"&gt;Laurens R&lt;/a&gt;&lt;/div&gt;
&lt;div style="font-weight: bold; font-size: larger; margin-top: 1ex;"&gt;Description: &lt;/div&gt;
&lt;div&gt;This class can be used to alter a PDF document to make it print when opened.&lt;br&gt;&lt;br&gt;
It can open a given PDF file and regenerate it inserting special JavaScript code to make it open the print dialog when it is opened.&lt;br&gt;&lt;br&gt;
The altered PDF file may be saved to a given file or displayed as the current script output.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8IEY5bDH9jVTK2O-OCza7iQsQKQ/0/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8IEY5bDH9jVTK2O-OCza7iQsQKQ/0/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8IEY5bDH9jVTK2O-OCza7iQsQKQ/1/da" rel="nofollow" target="_blank"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8IEY5bDH9jVTK2O-OCza7iQsQKQ/1/di" border="0" ismap onload="resizeImage(this)"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=zc-8e9w6cjM:V0RymmB5Ufg:yIl2AUoC8zA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=yIl2AUoC8zA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=zc-8e9w6cjM:V0RymmB5Ufg:7Q72WNTAKBA" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=7Q72WNTAKBA" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=zc-8e9w6cjM:V0RymmB5Ufg:qj6IDK7rITs" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?d=qj6IDK7rITs" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/phpclasses-xml?a=zc-8e9w6cjM:V0RymmB5Ufg:gIN9vFwOqvQ" rel="nofollow" target="_blank"&gt;&lt;img src="http://feeds.feedburner.com/~ff/phpclasses-xml?i=zc-8e9w6cjM:V0RymmB5Ufg:gIN9vFwOqvQ" border="0" onload="resizeImage(this)"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/phpclasses-xml/~4/zc-8e9w6cjM" height="1" width="1" onload="resizeImage(this)"&gt;</content>
    <source>
      <id>http://feedproxy.google.com/~r/phpclasses-xml/~3/zc-8e9w6cjM/6464-PHP-Alter-a-PDF-document-to-make-it-print-when-opened.html</id>
      <link href="http://feedproxy.google.com/~r/phpclasses-xml/~3/zc-8e9w6cjM/6464-PHP-Alter-a-PDF-document-to-make-it-print-when-opened.html" rel="alternate"/>
      <title>PDF print</title>
      <updated>2010-09-08T08:10:27Z</updated>
    </source>
  </entry>
  <entry>
    <title>The MongoDB vs MySQL debate&amp;hellip; - Danne Lundqvist</title>
    <updated>2010-09-08T08:10:42Z</updated>
    <published>2010-09-08T06:36:10Z</published>
    <id>planetaki.com:1475:post:95025358</id>
    <link href="http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/95025358" rel="full"/>
    <summary type="html">&lt;p&gt;Same stupid debate as so often before. Just the topics are different from time to time. &lt;em&gt;Found via the Swedish &lt;a href="http://utvbloggen.se/nosql-humor-med-mongodb-vs-mysql/" rel="nofollow" target="_blank"&gt;Utvbloggen&lt;/a&gt;, &lt;a href="http://www.readwriteweb.com/cloud/2010/09/an-amusing-take-mysql-diehard.php" rel="nofollow" target="_blank"&gt;RWW&lt;/a&gt;,&amp;nbsp;&lt;a href="http://highscalability.com/blog/2010/9/5/hilarious-video-relational-database-vs-nosql-fanbois.html" rel="nofollow" target="_blank"&gt;highscalability &lt;/a&gt;och&amp;nbsp;&lt;a href="http://nosql.mypopescu.com/post/1016320617/mongodb-is-web-scale" rel="nofollow" target="_blank"&gt;myNoSQL&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;param name="flashvars" value="height=390&amp;amp;width=480&amp;amp;file=http://newvideos.xtranormal.com/web_final_lo/574b3910-afc9-11df-914b-003048d69c21_27_web_final_lo_web_finallo-flv.flv&amp;amp;image=http://newvideos.xtranormal.com/web_final_lo/574b3910-afc9-11df-914b-003048d69c21_27_web_final_lo_poster.jpg&amp;amp;link=http://www.xtranormal.com/watch/6995033&amp;amp;searchbar=false&amp;amp;autostart=false"&gt;
&lt;param name="src" value="http://www.xtranormal.com/site_media/players/jwplayer.swf"&gt;
&lt;param name="allowfullscreen" value="true"&gt;
&lt;embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.xtranormal.com/site_media/players/jwplayer.swf" flashvars="height=390&amp;amp;width=480&amp;amp;file=http://newvideos.xtranormal.com/web_final_lo/574b3910-afc9-11df-914b-003048d69c21_27_web_final_lo_web_finallo-flv.flv&amp;amp;image=http://newvideos.xtranormal.com/web_final_lo/574b3910-afc9-11df-914b-003048d69c21_27_web_final_lo_poster.jpg&amp;amp;link=http://www.xtranormal.com/watch/6995033&amp;amp;searchbar=false&amp;amp;autostart=false" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Same stupid debate as so often before. Just the topics are different from time to time. &lt;em&gt;Found via the Swedish &lt;a href="http://utvbloggen.se/nosql-humor-med-mongodb-vs-mysql/" rel="nofollow" target="_blank"&gt;Utvbloggen&lt;/a&gt;, &lt;a href="http://www.readwriteweb.com/cloud/2010/09/an-amusing-take-mysql-diehard.php" rel="nofollow" target="_blank"&gt;RWW&lt;/a&gt;,&amp;nbsp;&lt;a href="http://highscalability.com/blog/2010/9/5/hilarious-video-relational-database-vs-nosql-fanbois.html" rel="nofollow" target="_blank"&gt;highscalability &lt;/a&gt;och&amp;nbsp;&lt;a href="http://nosql.mypopescu.com/post/1016320617/mongodb-is-web-scale" rel="nofollow" target="_blank"&gt;myNoSQL&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;


&lt;div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge"&gt;
&lt;ul class="socials"&gt;
&lt;li class="shr-comfeed"&gt;
			&lt;a href="http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?" target="_blank"&gt;Subscribe to the comments for this post?&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="shr-delicious"&gt;
			&lt;a href="http://delicious.com/post?url=http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/&amp;amp;title=The+MongoDB+vs+MySQL+debate..." rel="nofollow" class="external" title="Share this on del.icio.us" target="_blank"&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="shr-facebook"&gt;
			&lt;a href="http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/&amp;amp;t=The+MongoDB+vs+MySQL+debate..." rel="nofollow" class="external" title="Share this on Facebook" target="_blank"&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="shr-googlebuzz"&gt;
			&lt;a href="http://www.google.com/buzz/post?url=http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/&amp;amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz" target="_blank"&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="shr-linkedin"&gt;
			&lt;a href="http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/&amp;amp;title=The+MongoDB+vs+MySQL+debate...&amp;amp;summary=%0D%0A%0D%0ASame%20stupid%20debate%20as%20so%20often%20before.%20Just%20the%20topics%20are%20different%20from%20time%20to%20time.%20Found%20via%20the%20Swedish%20Utvbloggen%2C%20RWW%2C%C2%A0highscalability%20och%C2%A0myNoSQL.&amp;amp;source=dotvoid.com" rel="nofollow" class="external" title="Share this on LinkedIn" target="_blank"&gt;Share this on LinkedIn&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="shr-plaxo"&gt;
			&lt;a href="http://www.plaxo.com/?share_link=http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/" rel="nofollow" class="external" title="Share this on Plaxo" target="_blank"&gt;Share this on Plaxo&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="shr-stumbleupon"&gt;
			&lt;a href="http://www.stumbleupon.com/submit?url=http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/&amp;amp;title=The+MongoDB+vs+MySQL+debate..." rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon" target="_blank"&gt;Stumble upon something good? Share it on StumbleUpon&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class="shr-twitter"&gt;
			&lt;a href="http://twitter.com/home?status=The+MongoDB+vs+MySQL+debate...+-+http://b2l.me/ap74me&amp;amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!" target="_blank"&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="clear: both;"&gt;&lt;/div&gt;
&lt;/div&gt;</content>
    <source>
      <id>http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/</id>
      <link href="http://www.dotvoid.com/2010/09/the-mongodb-vs-mysql-debate/" rel="alternate"/>
      <title>The MongoDB vs MySQL debate&amp;hellip; - Danne Lundqvist</title>
      <updated>2010-09-08T08:10:42Z</updated>
    </source>
  </entry>
  <entry>
    <title>Luc de Brouwer's Blog:  Stop waiting, start array dereferencing in PHP now!</title>
    <updated>2010-09-09T13:48:16Z</updated>
    <published>2010-09-07T18:37:09Z</published>
    <id>planetaki.com:1475:post:94951496</id>
    <link href="http://www.phpdeveloper.org/news/15090" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/94951496" rel="full"/>
    <content type="html">&lt;p&gt;
In &lt;a href="http://www.lucdebrouwer.nl/stop-waiting-start-array-dereferencing-in-php-now/" rel="nofollow" target="_blank"&gt;this recent post&lt;/a&gt; to his blog &lt;i&gt;Luc de Brouwer&lt;/i&gt; makes a recommendation about dereferencing your arrays - start thinking about it now even before the feature's added to the stable release!
&lt;/p&gt;
&lt;blockquote&gt;
Ever since I started programming object oriented PHP I've been using function chaining and function dereferencing. But there is another thing I'd like to be able to do that was added to the PHP trunk over 8 months ago that still hasn't made it to the current release. The function I'm referring to is array dereferencing.
&lt;/blockquote&gt;
&lt;p&gt;
The trick of dereferencing arrays is that you can pull out a value from a returned array without having to use another line of code (i.e. "foo()['a']"). His suggestion is that you start thinking that way now, but use a sort of hack function to pull it off - one that takes the array and a key and returns that value. There's other suggestions &lt;a href="http://www.lucdebrouwer.nl/stop-waiting-start-array-dereferencing-in-php-now/#comments" rel="nofollow" target="_blank"&gt;in the comments&lt;/a&gt; on how to do things differently though. 
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15090</id>
      <link href="http://www.phpdeveloper.org/news/15090" rel="alternate"/>
      <title>Luc de Brouwer's Blog:  Stop waiting, start array dereferencing in PHP now!</title>
      <updated>2010-09-09T13:48:16Z</updated>
    </source>
  </entry>
  <entry>
    <title>Project: Aleksey Martynov's lexa-xml-serialization Tool for PHP 5.3</title>
    <updated>2010-09-09T13:48:16Z</updated>
    <published>2010-09-07T17:40:37Z</published>
    <id>planetaki.com:1475:post:94951494</id>
    <link href="http://www.phpdeveloper.org/news/15089" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/94951494" rel="full"/>
    <content type="html">&lt;p&gt;
&lt;i&gt;Aleksey Martynov&lt;/i&gt; has submitted a project that can come in quite handy of you do a lot of work with XML in your application - a &lt;a href="http://code.google.com/p/lexa-xml-serialization/" rel="nofollow" target="_blank"&gt;XML serialization tool&lt;/a&gt; for PHP 5.3 that lets you easily translate objects into valid XML.
&lt;/p&gt;
&lt;blockquote&gt;
lexa-xml-serialization is a lightweight library for serializing PHP objects to XML like it's done in .NET. My xml serializer requires that you mark serializable properties of your classes with doc-comment annotations. The properties are not required to be public. The lettercase of annotations doesn't matter. Whitespaces are not essential. Parameters are optional: type defaults to string, xmlName defaults to the property name. Parameter values must not be enclosed in quotes. Empty brackets may be omitted. 
&lt;/blockquote&gt;
&lt;p&gt;
&lt;a href="http://code.google.com/p/lexa-xml-serialization/" rel="nofollow" target="_blank"&gt;The page&lt;/a&gt; on the Google Code site gives some examples of it in use as well as as "&lt;a href="http://code.google.com/p/lexa-xml-serialization/wiki/FirstLook" rel="nofollow" target="_blank"&gt;first look&lt;/a&gt;" tutorial about building a large, more complex XML file. If you want to try it out, head over to &lt;a href="http://code.google.com/p/lexa-xml-serialization/downloads/list" rel="nofollow" target="_blank"&gt;the download page&lt;/a&gt; to grab the latest.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15089</id>
      <link href="http://www.phpdeveloper.org/news/15089" rel="alternate"/>
      <title>Project: Aleksey Martynov's lexa-xml-serialization Tool for PHP 5.3</title>
      <updated>2010-09-09T13:48:16Z</updated>
    </source>
  </entry>
  <entry>
    <title>ZendCasts.com: Creating RSS &amp;amp; Atom Feeds with Zend_Feed</title>
    <updated>2010-09-09T02:01:23Z</updated>
    <published>2010-09-07T16:27:55Z</published>
    <id>planetaki.com:1475:post:94951500</id>
    <link href="http://www.phpdeveloper.org/news/15088" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/94951500" rel="full"/>
    <content type="html">&lt;p&gt;
New on ZendCasts.com &lt;a href="http://www.zendcasts.com/creating-rss-atom-feeds-with-zend_feed/2010/09/" rel="nofollow" target="_blank"&gt;this screencast&lt;/a&gt; helps you use the Zend Framework's Zend_Feed component to create simple RSS and Atom feeds for your application.
&lt;/p&gt;
&lt;p&gt;
The screencast shows you how to create a basic controller with information for a sample blog post (title, date creates, content, etc) and a simple method to create default posts. A second controller is made to handle the feed creation and two actions are created - one for RSS and the other for Atom. The posts are then parsed and pushed out to views for displaying as feeds.
&lt;/p&gt;
&lt;p&gt;
The site has more great screencasts where this came from so check out &lt;a href="http://www.zendcasts.com/category/screencasts/" rel="nofollow" target="_blank"&gt;their screencasts section&lt;/a&gt; for ones on other topics like ZendX_JQuery, working with Zend_Log, and validation with Zend_Validate.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15088</id>
      <link href="http://www.phpdeveloper.org/news/15088" rel="alternate"/>
      <title>ZendCasts.com: Creating RSS &amp;amp; Atom Feeds with Zend_Feed</title>
      <updated>2010-09-09T02:01:23Z</updated>
    </source>
  </entry>
  <entry>
    <title>Selenium &amp;amp; Saucelenium: installation and dbus-xorg-woes - till</title>
    <updated>2010-09-08T02:27:41Z</updated>
    <published>2010-09-07T16:09:00Z</published>
    <id>planetaki.com:1475:post:94995403</id>
    <link href="http://till.klampaeckel.de/blog/archives/111-Selenium-Saucelenium-installation-and-dbus-xorg-woes.html" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/94995403" rel="full"/>
    <summary type="html">&lt;p&gt;We're about to launch a new product, and this time it's pretty client-side-intense. The application is powered by a lot of &lt;a href="http://javascriptmvc.com/" rel="nofollow" target="_blank"&gt;JavaScript(-mvc)&lt;/a&gt; and jQuery, which do xhr calls to a ZF/CouchDB powered backend. While js-mvc has unit-testing &lt;em&gt;sort of&lt;/em&gt; covetred, I was also looking for some integration testing, multiple browsers and all that.&lt;/p&gt;&lt;p&gt;I can't really say if you want one or the other. Revisiting Selenium in general, it's &lt;em&gt;IMHO&lt;/em&gt; the only viable and suitable thing for a PHP shop. Primarily of course because all those nifty test cases will integrate into our existing suite of PHPUnit/phpt tests. And while I use &lt;code&gt;Zend_Test&lt;/code&gt; already or find projects like &lt;a href="http://www.lastcraft.com/browser_documentation.php" rel="nofollow" target="_blank"&gt;SimpleTest's browser&lt;/a&gt; or even Perl's &lt;a href="http://search.cpan.org/dist/WWW-Mechanize/" rel="nofollow" target="_blank"&gt;www::mechanize&lt;/a&gt; very appealing, neither of those executes JavaScript like a browser.&lt;/p&gt;&lt;p&gt;Selenium and Saucelenium have the same root &amp;mdash; in fact Saucelenium is a Selenium fork. While the Selenium project seems to focus on &lt;code&gt;2.x&lt;/code&gt; currently, stable &lt;code&gt;1.x&lt;/code&gt; development seems to really happen at Saucelabs. That is if you call a commit from January 22nd of this year active development.&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;We're about to launch a new product, and this time it's pretty client-side-intense. The application is powered by a lot of &lt;a href="http://javascriptmvc.com/" rel="nofollow" target="_blank"&gt;JavaScript(-mvc)&lt;/a&gt; and jQuery, which do xhr calls to a ZF/CouchDB powered backend. While js-mvc has unit-testing &lt;em&gt;sort of&lt;/em&gt; covetred, I was also looking for some integration testing, multiple browsers and all that.&lt;/p&gt;

&lt;h2&gt;Selenium vs. Saucelenium&lt;/h2&gt;

&lt;p&gt;I can't really say if you want one or the other. Revisiting Selenium in general, it's &lt;em&gt;IMHO&lt;/em&gt; the only viable and suitable thing for a PHP shop. Primarily of course because all those nifty test cases will integrate into our existing suite of PHPUnit/phpt tests. And while I use &lt;code&gt;Zend_Test&lt;/code&gt; already or find projects like &lt;a href="http://www.lastcraft.com/browser_documentation.php" rel="nofollow" target="_blank"&gt;SimpleTest's browser&lt;/a&gt; or even Perl's &lt;a href="http://search.cpan.org/dist/WWW-Mechanize/" rel="nofollow" target="_blank"&gt;www::mechanize&lt;/a&gt; very appealing, neither of those executes JavaScript like a browser.&lt;/p&gt;

&lt;p&gt;Selenium and Saucelenium have the same root &amp;mdash; in fact Saucelenium is a Selenium fork. While the Selenium project seems to focus on &lt;code&gt;2.x&lt;/code&gt; currently, stable &lt;code&gt;1.x&lt;/code&gt; development seems to really happen at Saucelabs. That is if you call a commit from January 22nd of this year active development.&lt;/p&gt;

&lt;p&gt;In the process of selecting one or the other, more people recommended that I'd use the Saucelabs distribution than the original one, and so I forked it on &lt;a href="http://github.com/till/saucelenium" rel="nofollow" target="_blank"&gt;github&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Installation&lt;/h2&gt;

&lt;p&gt;Along with a script to start the damn thing, &lt;a href="http://github.com/till/saucelenium" rel="nofollow" target="_blank"&gt;my fork&lt;/a&gt; also contains a &lt;code&gt;README.md&lt;/code&gt;. Said &lt;em&gt;README&lt;/em&gt; covers the installation part in detail, so I won't have to repeat myself here. All of this is pretty Ubuntu-centric and has been tested on Karmic Koala. I expect things to work just as well on Lucid, or on any other distribution if you get the installation right.&lt;/p&gt;

&lt;p&gt;One thing that took me a while to figure out was the following error message:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;till@testing:/usr/src/saucelenium$ sudo ./start.sh 
[...]
[config/dbus] couldn't take over org.x.config: org.freedesktop.DBus.Error.AccessDenied (Connection ":1.17" is not allowed to own the service "org.x.config.display0" due to security     policies in the configuration file)
(EE) config/hal: couldn't initialise context: unknown error (null)
13:17:23.166 INFO - Writing debug logs to /var/log/selenium.log
13:17:23.166 INFO - Java: Sun Microsystems Inc. 16.0-b13
13:17:23.166 INFO - OS: Linux 2.6.32.1-rscloud amd64
13:17:23.176 INFO - v1.0.1 [exported], with Core v@VERSION@ [@REVISION@]
13:17:23.296 INFO - Version Jetty/5.1.x
13:17:23.306 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
13:17:23.306 INFO - Started HttpContext[/selenium-server,/selenium-server]
13:17:23.316 INFO - Started HttpContext[/,/]
13:17:23.326 INFO - Started SocketListener on 0.0.0.0:4444
13:17:23.326 INFO - Started org.mortbay.jetty.Server@7526e85f
^C13:18:09.796 INFO - Shutting down...
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After Google'ing for a bit, I came to the conclusion that the above means that I didn't have the xserver installed.&lt;/p&gt;

&lt;p&gt;The fix was rather simple: &lt;code&gt;aptitude install xserver-xorg&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Example test&lt;/h2&gt;

&lt;p&gt;The following is an example test case. It'll open &lt;code&gt;http://www.php.net/&lt;/code&gt; and make sure it finds "What is PHP?" somewhere on that page.&lt;/p&gt;

&lt;p&gt;Then it will continue to &lt;code&gt;/downloads.php&lt;/code&gt; (by clicking on that link) and will make sure it finds "Binaries for other systems" on that page.&lt;/p&gt;

&lt;p&gt;To run this test, execute: &lt;code&gt;phpunit ExampleTestCase.php&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?php
class ExampleTestCase extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        $this-&amp;gt;setHost('localhost');
        $this-&amp;gt;setPort(4444);
        $this-&amp;gt;setBrowser("*chrome");
        $this-&amp;gt;setBrowserUrl("http://www.php.net/");
    }

    public function testPHP()
    {
        $this-&amp;gt;open('/');
        $this-&amp;gt;waitForPageToLoad('30000');
        $this-&amp;gt;assertTextPresent('What is PHP?');

        $this-&amp;gt;click('//a[@href="/downloads.php"]');
        $this-&amp;gt;waitForPageToLoad('30000');
        $this-&amp;gt;assertTextPresent('Binaries for other systems');

        // check this out, especially useful for debugging:
        $this-&amp;gt;assertEquals('http://www.php.net/downloads.php', $this-&amp;gt;drivers[0]-&amp;gt;getLocation());
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;That's all.&lt;/h2&gt;

&lt;p&gt;Thanks for reading, and until next time.&lt;/p&gt;</content>
    <source>
      <id>http://till.klampaeckel.de/blog/archives/111-Selenium-Saucelenium-installation-and-dbus-xorg-woes.html</id>
      <link href="http://till.klampaeckel.de/blog/archives/111-Selenium-Saucelenium-installation-and-dbus-xorg-woes.html" rel="alternate"/>
      <title>Selenium &amp;amp; Saucelenium: installation and dbus-xorg-woes - till</title>
      <updated>2010-09-08T02:27:41Z</updated>
    </source>
  </entry>
  <entry>
    <title>Padraic Brady's Blog: Zend Framework Proposal: ZendHtmlFilter (HTML Sanitisation And Manipulation)</title>
    <updated>2010-09-09T02:01:23Z</updated>
    <published>2010-09-07T15:13:17Z</published>
    <id>planetaki.com:1475:post:94951497</id>
    <link href="http://www.phpdeveloper.org/news/15087" rel="alternate"/>
    <link href="http://planetaki.com/php/posts/94951497" rel="full"/>
    <content type="html">&lt;p&gt;
&lt;i&gt;Padraic Brady&lt;/i&gt; has a new post on his blog talking about &lt;a href="http://blog.astrumfutura.com/archives/432-Zend-Framework-Proposal-ZendHtmlFilter-html-Sanitisation-And-Manipulation.html" rel="nofollow" target="_blank"&gt;a new proposal&lt;/a&gt; he's made for the Zend Framework about filtering and sanitizing HTML content.
&lt;/p&gt;
&lt;blockquote&gt;
For a while now, I've been keen to build a HTML Sanitisation solution for PHP. Where else would I end up putting it other than in Zend Framework? As I've explored in past articles [&lt;a href="http://blog.astrumfutura.com/archives/430-HTML-Sanitisation-Benchmarking-With-Wibble-ZF-Proposal.html" rel="nofollow" target="_blank"&gt;1&lt;/a&gt;] [&lt;a href="http://blog.astrumfutura.com/archives/431-HTML-Sanitisation-The-Devils-In-The-Details-And-The-Vulnerabilities.html" rel="nofollow" target="_blank"&gt;2&lt;/a&gt;], HTML Sanitisation in PHP is a very inconsistent practice. [...] Isn't it possible to create a sanitiser that is both secure by default and performs well?
&lt;/blockquote&gt;
&lt;p&gt;
He talks about his &lt;a href="http://github.com/padraic/wibble" rel="nofollow" target="_blank"&gt;Wibble&lt;/a&gt; tool that's become the base of his idea for a filtering feature built into the framework. It mainly uses the PHP DOM functionality and HTML Tidy for speed and parsing and was benchmarked as performing better than the HTMLPurifier tool. If you're interested, check out &lt;a href="http://framework.zend.com/wiki/pages/viewpage.action?pageId=25002168" rel="nofollow" target="_blank"&gt;his proposal&lt;/a&gt; for its inclusion in the Zend Framework 2.0.
&lt;/p&gt;</content>
    <source>
      <id>http://www.phpdeveloper.org/news/15087</id>
      <link href="http://www.phpdeveloper.org/news/15087" rel="alternate"/>
      <title>Padraic Brady's Blog: Zend Framework Proposal: ZendHtmlFilter (HTML Sanitisation And Manipulation)</title>
      <updated>2010-09-09T02:01:23Z</updated>
    </source>
  </entry>
</feed>
