Ervaringen met PHP4/PHP5 migratie

Kingsquare is begonnen met het ontwikkelen van het KMT in 2004. In die tijd was PHP5 nog in een vroeg stadium, werkten wij nog niet zo gestructureerd als nu en waren unittesting, version control en termen als AJAX, web2.0, (x)-html validity nog nauwelijks iets waar we ons druk over moesten maken. Nee, het was een tijd waarin Kingsquare nog zoekende was naar een oplossing voor het DRY-syndroom waar iedereen mee worstelde. CMS hier, overzetten naar daar, bug hier, bug daar. Daar moesten we iets op vinden: KMT4. De vierde revisie van het pakket KMT. Dit KMT werd volledig object-georiënteerd zodat het te onderhouden bleef, toekomstbestendig was en natuurlijk technisch ook nog eens een flinke uitdaging. In een korte periode van 3 maanden werden de fundamenten gelegd waarop het framework tot de dag van vandaag nog draait. De tijd heeft echter niet stil gestaan en ook de taal, PHP, heeft een enorme ontwikkeling ondergaan.

PHP5

PHP versie 5 biedt naast een flinke ondersteuning voor écht object-georiënteerd programmeren ook een flinke dosis extra handvatten om een applicatie als het KMT, wat toch meer een framework is dan een `simpel CMS`, nog beter, sneller en meer solide in elkaar te zetten. Het is dan ook niet verwonderlijk dat sinds de introductie van PHP5 er steeds meer en meer PHP georiënteerde frameworks te vinden zijn. (ZendFramework, Symphony, CakePHP, Yii om er maar een paar te noemen) De vele voordelen die PHP5 boven PHP4 biedt beslaan o.a.:

  • betere datum/tijd verwerking
  • eenvoudigere database handling
  • ingebouwde (snelle) XML handling
  • veel snellere verwerking van object georiënteerde code
  • ingebouwde beveiligingsmethodes
  • betere ondersteuning van technieken als interfaces, abstract methods (-classes)

Nu brengt PHP5 niet alleen maar goede dingen met zich mee: er zijn ook een aantal zaken fundamenteel veranderd wat het bij een overstap als het KMT niet eenvoudig maakt. Het KMT bestaat ondertussen uit flink wat PHP-LOC en  kent vele helaas verouderde code. Dit maakt een overstap een behoorlijke lastige opgave. In PHP4 bestond er namelijk nogal wat problematiek omtrent het gebruik van referenties. Wij hebben destijds (zonder er een naam aan te geven verder) een registry pattern geïmplementeerd voor het eenmalig ophalen en beheren van instanties van objecten. Helaas hebben we behoorlijk wat truken uit moeten halen om ervoor te zorgen dat dit deed wat het moest doen onder PHP4. Nu onder PHP5 moeten we al die 'hacks' weer controleren en aanpassen. In de hierop volgende postings zullen ook enkele voorbeelden van code aan bod komen om bepaalde onderdelen uit de krochten van het KMT toe te lichten.

Toekomst

Het KMT is nog niet volledig over op PHP5, toch draait het overgrote deel van de website ook zonder problemen op PHP5: dankzij unittesting, versioncontrol en andere technieken kunnen we nu meer grip op deze overgang krijgen en zijn er een hoop tests te automatiseren. Ook het goed gebruik van MVC technieken bevordert uiteraard de overgang naar een nieuwe omgeving. Dat heeft ook meer voeten in de aarde dan alleen de code. Ook zaken als webservers, loadbalancers de task scheduler, database integratie e.d. komen hierbij om de hoek kijken. Al deze zaken zullen moeten worden nagekeken. In hierna volgende posts zullen niet alleen bepaalde interne onderdelen uit de doeken worden gedaan ook de algehele opbouw van een framework als het KMT zal meer worden uitgelicht.

Plaats een reactie

Terug naar het weblog overzicht