Zoals mijn collega en teamgenoot Harrie meldde in
zijn blog post is PHP meer dan een simpel script taaltje. Vooral met de komst van PHP5 is het goed mogelijk om met PHP een compleet object-geori�nteerde (web)applicatie te maken.

Maar toch wel het mooiste aan PHP is het feit dat het
niet nodig is en programma's kunnen
groeien.
PHP web applicaties beginnen vaak als simpele scripts en groeien enkel uit tot complete OO (object oriented) programma's als dat nodig blijkt. En de mogelijkheid van PHP om dit relatief simpel te doen maakt het dat de taal uitermate geschikt is voor '
Agile development'.
Een van de technieken die daarom veel gebruikt wordt in PHP is het toepassen van functionele decompositie. Dit betekent het 'opschonen' van een functie door logica er uit te verwijderen die er niet in hoort.
Bij het uitbreiden van functionaliteit daag ik iedereen dan ook uit zichzelf
altijd de volgende 2 vragen te stellen:
- Wat verwacht een andere ontwikkelaar van deze functie/methode/script?
De echte kracht van OOP ligt in objecten kunnen begrijpen en gebruiken zonder ooit de code gezien te hebben. Werken met bestaande code hoort
saai en makkelijk te zijn. Hoe verrast is een ontwikkelaar als hij erachter komt dat een Customer object ook logica bevat om producten bij te werken?
- Bevat het niet teveel code?
Binnen Ibuildings zijn er verschillende meningen over hoe lang een functie of methode mag zijn. Persoonlijk ben ik geen voorstander van een harde limiet maar houd ik aan dat als een functie meer dan
10 regels code bevat, dat het een teken is dat het misschien meer doet dan het hoort te doen. Als je niet oppast kunnen sommige methodes wel 400 regels code bevatten en beginnen objecten wel heel erg veel te lijken op gewone procedurele code met een simpel schilletje er om heen. Als het lijkt alsof een methode meer dan 10 regels bevat, maar dat het eigenlijk toch allemaal in die functie hoort, dan is het vaak het geval dat de functie taken probeert uit te voeren die eigenlijk bij een apart object horen.
Een van de hulpmiddelen die ik gebruik bij functionele decompositie en iedereen aanraad is de '
Zend Code Analyser' van Zend Studio. Deze nifty feature doorzoekt het bestand dat je op dat moment aan het bewerken bent naar variabelen die gebruikt worden voor ze gedefinieerd worden, variabelen die meegegeven worden die niet gebruikt worden (allebei tekens dat je iets vergeten bent mee te geven), etc.