Drupal 7 – Werken met databases via PHP PDO
Met de overgang naar Drupal 7 stappen we over op de nieuwe Drupal Database Abstraction Layer API, die is gebaseerd op PDO. PDO wordt al lange tijd gebruikt in het Zend Framework en in vele andere PHP-frameworks. Alles werkte prima in Drupal 6 met gewone SQL-query’s — dus waarom hebben we iets nieuws nodig?
Laten we eerst begrijpen wat PDO precies is.
PDO maakt het mogelijk om PHP-code voor database-interacties eenvoudig over te zetten van de ene database naar een andere. Stel dat je website met MySQL werkte — dan kun je zonder problemen overstappen naar PostgreSQL. Wat betreft het gebruik van Oracle: ik heb het zelf nog niet getest, maar in principe zou het ook moeten werken.
PHP Data Objects (PDO) is een extensie voor PHP die een lichte, consistente interface biedt voor toegang tot databases. De driver van elke database wordt geïmplementeerd via de PDO-interface en kan worden uitgebreid met specifieke functies van die database.
PDO biedt toegang tot een abstractielaag die wordt gebruikt voor het uitvoeren van query’s en het ophalen van gegevens. PDO zelf biedt echter geen database-abstractie: het herschrijft geen SQL en simuleert geen ontbrekende functies van bepaalde databases. Als je dergelijke functies nodig hebt, moet je een volledig database-abstraction layer gebruiken. PDO is beschikbaar vanaf PHP 5.1 en hoger, en is ook beschikbaar als een PECL-extensie voor PHP 5. PDO vereist de moderne OOP-functionaliteit van PHP 5 en werkt niet met oudere versies van PHP.
Dit betekent dat ontwikkelaars nu nog eenvoudiger platformonafhankelijke code kunnen schrijven. PDO is geen volledige abstractielaag zoals PearDB — het is eerder een uniforme toegangsmethode tot databases dan een op zichzelf staande API.
Als we modules willen schrijven voor Drupal 7, moeten we dus de PDO-syntaxis gebruiken voor het schrijven van query’s, zodat onze modules compatibel blijven met meerdere databasesystemen.