Skip to main content

Sneller, veiliger, stabieler – Joomla! en PHP7

Helvecio da Silva - @helvecio Dit artikel is geschreven door Ufuk Avcu op maandag 1 februari 2016 en voor Joomla!NL vertaald en hier en daar aangevuld met actuele details door Wouter (WoodyF4u).

Joomla! is een CMS dat is gebaseerd op PHP & MySQL. Door het toepassen hiervan kon er gebruik worden gemaakt van een moderne en goede basis om in de afgelopen 10 jaar het CMS op te ontwikkelen. In dit artikel wordt een klein stukje geschiedenis beschreven en uitgelegd wat de voor- en nadelen zijn van PHP7 in combinatie met Joomla! 3.5.

PHP en Joomla!

In het begin ondersteunde Joomla! 1.0 versie PHP 4.2. De minimaal vereiste PHP-versie werd bij elke volgende versie van Joomla! bijgesteld. Daardoor was het ontwikkelen van Joomla! altijd nauw gekoppeld aan de ontwikkeling van PHP en het gebruik ervan op de shared webhostingservers. En dat is logisch, want met het uitkomen van elke nieuwe PHP-versie kon men er vanuit gaan dat er niet alleen nieuwe functionaliteiten in zouden zitten, maar dat ook de snelheid en stabiliteit waren verbeterd.

PHP 5 kwam met de ondersteuning van object-georiënteerd programmeren, waardoor het mogelijk werd voor ontwikkelaars van Joomla! om betere code te schrijven. Dit is maar één van de vele voordelen van versie 5. Ook een groot aantal nieuwe mogelijkheden in PHP hadden directe impact op de veiligheid en de stabiliteit van Joomla!

Verbeteringen in PHP 7

Naast de vele functionele verbeteringen in PHP 7 is de snelheid van deze versie wel het meest opvallend. Dit is nog niet direct zichtbaar op Joomla!-websites als er maar enkele html-verzoeken werden gestart. Maar na enkele metingen met Joomla! 3.5 Beta 2 bleek dat de laadtijd van de complete html-output was gereduceerd met gemiddeld 10 tot 30%. Dat alleen door via het Control-Panel (Beheerscherm) van je hostingbedrijf de PHP-versie naar 7 om te zetten (uiteraard moet PHP 7 dan wel worden aangeboden).

Op pagina’s met veel bezoekersverkeer is de verbetering nog veel beter zichtbaar. Als een webserver bijvoorbeeld eerst 100 verzoeken kon afhandelen met PHP 5.6, dan kan diezelfde server met PHP 7 wel 200 – 300 verzoeken verwerken. Vooral de complexe extensies die veel rekenkracht van de server vragen zullen voordeel hebben van PHP 7.

Backwards compatibility

Joomla! had JString als een class sinds Joomla! 1.5. In Joomla! 3.3 werd er een Framework package geïntroduceerd die een duplicate class bevatte die "string" werd genoemd. JString was ontwikkeld om het framework string package uit te breiden, maar het bleven duplicaten. "String" is een beveiligde class name in PHP 7 en voorkomt een conflict met de PHP 7 class.  String kreeg een nieuwe naam en heet nu StringHelper.

Dit betekent dat als  het gebruik van JString zou worden voortgezet, dat er dan geen  backwards compatible mogelijk zou zijn. Daarom is er toch voor deze overgang gekozen omdat de voordelen zwaarder wegen dan de nadelen.

Wat betekent dit voor de gebruikers?

Veel gebruikers zullen er in de komende tijd nog niet worden geconfronteerd met de vraag om over te stappen op PHP 7. De meeste hostingbedrijven (zelfs de grote) bieden nog steeds alleen PHP 5.5 en PHP 5.6 aan. Het aanbieden van een extra PHP-versie brengt natuurlijk kosten met zich mee en veel bedrijven proberen dat natuurlijk te voorkomen. Mocht je hostingbedrijf PHP 7 nog niet aanbieden, dan kan het geen kwaad om ze eens te vragen wanneer ze dit wel gaan doen. Uiteindelijk is dat de enige mogelijkheid om applicaties te draaien op een modern en snel platform.

Enkele feiten over de PHP-versies:
  • PHP 5.3 – verouderd  - zou dus eigenlijk niet meer gebruikt mogen worden
  • PHP 5.4 – verouderd  - zou dus eigenlijk niet meer gebruikt mogen worden
  • PHP 5.5 – hierin werden veiligheidsupdates aangeboden voor de opvolgende vijf maanden
  • PHP 5.6 – ontwikkelings-ondersteuning voor de opvolgende elf maanden en daarna worden er nog gedurende twee jaar updates voor geleverd
  • PHP 7 – ondersteuning tot eind 2018
PHP 6 is destijds geïntroduceerd als een ontwikkelversie, maar om diverse redenen is er niet mee doorgegaan. Om geen verwarring te scheppen is er door de PHP-ontwikkelaars besloten om niet verder te gaan met PHP 6 en dus deze nieuwe versie PHP 7 te noemen.

Belangrijk voor extensie-ontwikkelaars

Iedereen die in de code gebruik maakt van het woord “String” moet de code updaten en het woord “String” vervangen door “StringHelper”. Als de code niet wordt bijgewerkt, dan zal de extensie niet meer werken in Joomla! 3.5. Het betreft hier een eenvoudige aanpassing die zonder veel inspanning kan worden uitgevoerd.

Als een extensie alleen Joomla! 3.4 en later ondersteunt maakte die al gebruik van de ‘Joomla\String\String’class. In dat geval is het voldoende om de referenties te updaten naar ‘Joomla\String\StringHelper’ als de ontwikkelaar van plan is om daarna alleen nog Joomla! 3.5 en later  te ondersteunen. In het geval er ook ondersteuning van voorgaande Joomla!-versies wordt aangeboden, dan moet de (sinds Joomla! 1.5 gebruikte) ‘JString’class worden toegepast.
Let op: Het probleem met de gereserveerde keywords voor PHP 7 is niet alleen een specifiek Joomla!-probleem, maar kan ook optreden in andere applicaties die overgaan naar PHP 7.

Conclusie

Op het moment van publiceren van deze vertaling van het artikel zitten we nog maar één dag voor het uitkomen van de stabiele versie van Joomla! 3.5 en is het test-traject al door vele vrijwilligers doorlopen.
Joomla! 3.5 werkt zowel met PHP 5.6 als met PHP 7, maar in combinatie met PHP 7 wordt met name een hogere snelheid gehaald.
Informeer dus vast bij je hostingbedrijf of ze al PHP 7 aanbieden. Als ze het aanbieden, dan moet je dit over het algemeen via het Control Panel (Beheerscherm) van de provider omzetten van PHP 5.x naar 7.

Let op: PHP 7 werkt alleen met Joomla! 3.5 en later. Zolang je nog blijft werken met Joomla! 3.4.8 is het nog niet mogelijk om al over te schakelen naar PHP 7.

Lees het oorspronkelijke artikel in het Engels op magazine van joomla.org