Vooruitblik op PHP6 (highlights)

Hoewel het nog wel even duurt voordat PHP v6 zal worden gaan gebruikt, is het goed om op de hoogte te zijn van de ontwikkelingen op dit gebied. Immers, dan kun je alvast zorgen dat alle code die je nu schrijft blijft werken in PHP6, of in ieder geval weinig aanpassingen vereist. We zijn er zelf in ieder geval al voor je mee bezig, en bieden sinds kort PHP6 webhosting zodat zodat je hier alvast op kunt testen.

Met de overgang naar PHP6 zullen verscheidene functies, die eigenlijk al lang als onveilig of onhandig beschouwd worden eindelijk definitief verwijderd worden. Dat zorgt er voor dat sommige oude PHP scripts, die nog relatief makkelijk naar PHP5 geport konden worden nu echt niet meer zullen werken. Maar wie heeft functies als register_globals nu niet al lang achter zich gelaten?

Nieuwe functionaliteit

Unicode

Volledige unicode ondersteuning is het paradepaardje van PHP6. Unicode (bijvoorbeeld in de vorm van UTF-16) is een manier om karakters te kunnen tonen van alle geschreven talen. In voorgaande PHP versies was vaak een lastig karwei om met iets anders dan ASCII (alleen engelse karakters) te werken.

PHP6 komt met twee type strings. Standaard zullen nu alle strings als unicode worden geinterpreteerd, maar je kunt deze ook als binaire string definiëren.

Hieronder een heel simpel voorbeeld waarin we PHP de lengte van de string laten bepalen. PHP5 heeft geen weet van ‘karakters’, enkel van bytes:

$string = "voilá";
echo "$string"."! De lengte is ".strlen("$string");

In PHP5 krijg je dan terug:

Voilá! De lengte is 6

In PHP6 is dit echter een unicode string:

Voilá! De lengte is 5

Namespaces

Met namespaces pakt PHP6 het probleem aan dat de naamgeving van classes van verschillende libraries (of je eigen code) elkaar soms hindert. Dat probleem kon je voorheen alleen voorkomen door het gebruik van ellenlange en onoverzichtelijke namen voor classes. Met namespaces kun je PHP code groeperen, zodat dezelfde naam voor een functie of class niet botst met die uit een ander package.

Als je niet bekent bent met dit concept bekijk dan het volgende voorbeeld, waarin namespaces gebruikt worden. In dit voorbeeld zie je dat dezelfde class en functie namen twee keer worden gebruikt, en dat is mogelijk doordat ze hun eigen namespace hebben.

example_ns.php:

<?php
require 'lib1.php';
require 'lib2.php';
lib1\nameOfClass::helloWorld();
echo "<br>";
lib2\nameOfClass::helloWorld();
?>

lib1.php:

<?php
namespace lib1;
  class nameOfClass{
    function helloWorld(){
      echo "Hello from ". __NAMESPACE__ ." namespace";
    }
  }
?>

lib2.php:

<?php
namespace lib2;
  class nameOfClass{
    function helloWorld(){
      echo "Hello from ". __NAMESPACE__ ." namespace";
    }
  }
?>

Niet meer te gebruiken

Magic quotes

Deze functie was bedoeld om SQL injecties tegen te gaan, door “achter de schermen” input schoon te maken door het escapen van quotes, dubbele quotes etc, zonder dat je als developer hier iets voor hoefde te doen (wat dus vooral onwetende of beginnende developers hielp). Echter leverde dit “>nogal wat problemen op en is besloten dat PHP programmeurs hier zelf mee om moeten gaan. Zorg dus zelf voor voor goede input checks. Daar is bijvoorbeeld de functie mysql_real_escape_string voor bedoeld.

Safe_mode

Voor veel developers zal het waarschijnlijk een opluchting zijn; safe_mode zal verdwijnen in PHP6. Dit zorgde er onder andere voor dat je enkel bestanden kon openen die van dezelfde gebruiker waren als het PHP script. Standaard stond/staat dit bij veel webhosters aan om de veiligheid te verhogen, zo ook bij ons (je kunt dit bij ons uitzetten via je CCC). Er is echter besloten dat het ten onrechte de indruk gaf dat dit PHP veilig maakte, en de veiligheid beter op webserver/OS beheer kan worden uitgevoerd.

Register globals

Deze functie is uit PHP6 verdwenen. Dit zal geen verrassing zijn. Het gebruik van deze functionaliteit is al sinds lange tijd afgeraden (vanaf PHP 4.2), en staat standaard uit in de PHP configuratie.

Tot slot

Dit is slechts een greep uit de veranderingen die PHP6 met zich meebrengt, en wijzigingen zijn nog te verwachten. We houden je op de hoogte!

Als je interesse hebt in PHP6 Alpha release webhosting, houd dan onze nieuwsbrief in de gaten. Je kunt ook direct contact met ons opnemen als je geen klant bent.