Veel PHP boeken bieden niet veel meer dan kopieën van de content van concurrenten. Het ‘PHP 5 Superboek’ is daarop een zeer welkome uitzondering. Het boek steekt in op de ervaren PHP gebruiker en gaat inderdaad verder dan de uitleg hoe functies werken en wat MySQL is. Wat ik misschien wel het meest waardeer is dat het geen boek is wat in kaft of in prijs schreeuwt DAT HET EEN BOEK VOOR GEVORDERDEN IS. Persoonlijk vind ik die mededeling altijd zwaar storend.
Het boek behandelt o.a. deze thema’s:
De auteurs – Wouter Tengeler en Marco van Hylckama Vlieg – hebben ervaring in het geven van Masterclasses PHP binnen Eduvision. Ik heb nog nooit zo’n training van dichtbij meegemaakt, maar met dit boek geven de auteurs een mooi visitekaartje af. De onderwijservaring van de auteurs is wat mij betreft terug te lezen in de helderheid waarin uitleg wordt gegeven. Wat ik echter mis is aan het begin van een hoofdstuk een overzicht wat er behandeld zal gaan worden. Persoonlijk vind ik dit zelf altijd erg verhelderend voor het snel scannen van een boek of het gebruiken van het boek als naslagwerk.
Ik kan natuurlijk niet volledig zijn door alle sterke eigenschappen van het boek te benoemen. Ik loop echter een aantal zaken langs die mij positief opvielen.
Het boek is geschreven voor PHP 5, wat net uit was toen het boek verscheen. Voorbeelden worden echter compatible gemaakt waar dat nodig is. Ook wordt helder uitgelegd waarom de ene code in PHP 5 wel werkt, maar in PHP 4 niet. Dit gebeurt in een speciaal vormgeven box met de naam ‘verschil’. Een enkele keer ontbreekt deze box echter (bijvoorbeeld op p. 71), maar dan wordt in de lopende tekst wel uitgelegd waarom de gegeven code niet in PHP 4 werkt. Aangezien het boek geschreven is voor PHP 5, vind ik het niet zo sterk dat er soms verwezen wordt naar literatuur welke over PHP 4 gaat.
Zoals gezegd steekt het boek in bij redelijk ervaren PHP-gebruikers. Toch wordt er af en toe een opmerking gemaakt om mensen tegemoet te komen die iets basics van PHP toch niet snappen. Zo begint het boek uiteraard met wat opmerkingen over het installeren van een webserver – wat voor gevorderde PHP’ers toch niet nieuw zou zijn. Op deze manier kunnen nét niet gevorderde gebruikers toch een eind mee komen. Een enkele keer wordt vergeten om te zien naar deze intermediaire gebruikers. Zo wordt de ‘Zend engine’ zomaar zonder introductie gelanceerd. Wat mij betreft slechts een klein schoonheidsfoutje.
Wat ik erg verfrissend in het boek vind is de uitleg in hs. 4 wat Object Georiënteerd Programmeren is. Er wordt een klein codevoorbeeld gegeven wat gaat over een nieuwssysteem met redacteurs. Het voorbeeld beslaat 3 PHP-files. In file 1 en 2 worden de functies betreffende de nieuwsberichten en de redacteurs respectievelijk besproken. File 3 is een main.php waarin de eerste twee files geinclude worden en de boel geprint wordt. Weliswaar komen er in deze functies geen classes en objecten voor, maar toch is het volgens de auteurs een voorbeeld van OOP.
De belangrijkste eigenschap van OOP is de organisatie van de gegevens en functionaliteit. Hoewel moderne talen speciale technieken en constructies hebben om OO te programmeren, is het niet strikt noodzakelijk deze constructie te gebruiken om toch tot een objectgeoriënteerd ontwerp te implementeren.
Naar mijn mening komt hier de onderwijservaring van de auteurs naar voren. Er wordt niet alleen gezegd hoe OOP werkt, maar er wordt gekeken naar de reden waarom OOP de moeite waard is. Sterker nog – Ze geven aan dat de principes van OOP ook min of meer bereikt kunnen worden zonder dat er daadwerkelijk objecten en classes worden gebruikt.
Het boek speelt voor een groot deel ook in op het werken in teams van programmeurs. Het hoofdstuk over codeerstandaards is helder, maar ook de uitleg over interfaces is nuttig voor grotere projecten. Tegelijk zijn de auteurs eerlijk genoeg om aan te geven dat het voor kleinere klussen niet zinvol is interfaces aan te maken. Ook de – zeer uitgebreide – aandacht voor CVS toont aan dat het boek nut kan hebben binnen een programmeerteam.
Aansluitend bij de vorige twee onderwerpen, moet ik zeggen dat het boek verder gaat als alleen het geven van een stapel PHP code. Hoofdstuk 6 gaat bijvoorbeeld over geavanceerde OO-technieken en behandelt thema’s als multi-tier ontwerp, introspectie en design patterns. Het mooie hiervan vind ik weer dat de aandacht van de directe oplossing naar het idee achter de oplossing wordt getrokken. Het boek ademt dan ook geen ‘How to’ sfeer uit, maar is op zoek naar de algemene ontwikkeling van de programmeur.
Hoofdstuk 12 gaat over optimalisatie. Aangezien het boek bedoelt is voor programmeurs die aan grotere projecten werken, mag dit hoofdstuk niet ontbreken. De tips die gegeven worden omtrent de optimalisatie van een database zijn denk ik bij de meeste meer ervaren programmeurs wel bekend (indices, normalisatie), maar ze worden dusdanig goed en helder uitgelegd dat ik ook over dit hoofdstuk aardig tevreden ben.
Alles bij elkaar is dit een positief boek wat verder gaat dan zijn titel doet vermoeden: PHP 5 is zeker de spil waar het boek om draait, maar er wordt verder gekeken. Persoonlijk vind ik dit plezierig, omdat er niet alleen code gegeven wordt, maar ook allerlei andere facetten als beveiliging, optimalisatie en CVS worden behandeld. Een erg plezierig en uitgebreid boek voor de gevorderde PHP’er.