title: Best PHP DAL (data abstraction layer) so far
body: <p>What is the best PHP DAL (data abstraction layer) so far developed under any open source project which we could re-use with good faith? </p>
  
  <p>I am finding it hard to choose a DAL for my application that sufficiently supports abstraction to most common databases systems (MySQL, PostgreSQL, MSSQL, Oracle, etc) and is:</p>
  
  <ol>
  <li>widely tested, </li>
  <li>has good interface (readable method names, good parameter passing strategy),</li>
  <li>fast,</li>
  <li>lightweight, </li>
  <li>providing cache (e.g integrates with Memcache or supports a good caching mechanism),</li>
  <li>open-source license, </li>
  <li>should have adapters for at least MySQL/MySQLi (non-PDO based)</li>
  </ol>
  
  <p>Some of the libararies to  consider:</p>
  
  <ul>
  <li>PHPBB DAL <a href="http://wiki.phpbb.com/Database_Abstraction_Layer" rel="noreferrer">http://wiki.phpbb.com/Database_Abstraction_Layer</a></li>
  <li>Joomla DAL <a href="http://api.joomla.org/Joomla-Framework/Database/JDatabase.html" rel="noreferrer">http://api.joomla.org/Joomla-Framework/Database/JDatabase.html</a></li>
  <li>ADOdb <a href="http://phplens.com/adodb/" rel="noreferrer">http://phplens.com/adodb/</a></li>
  <li>Zend_db </li>
  <li>Doctrine (downside only supports PDO_*)</li>
  <li>any other DAL used/developed under any open-source project/branch</li>
  </ul>
  
  <p>Please don't consider:</p>
  
  <ul>
  <li>PDO</li>
  <li>All ORMs (however, Doctrine seems to have a separate DAL besides ORM)</li>
  </ul>