Studyx - Professional web training

BECOME A WEB EXPERT

Wat is er nieuw aan PHP 7?

De release date van PHP 7 komt dichterbij (november 2015). Hoog tijd dus om de belangrijkste veranderingen op te lijsten en te bespreken.

Na 5 komt 7?

Waarom is er geen PHP 6? De grootste reden waarom de volgende officiële versie van PHP versienummer 7 krijgt is omdat PHP 6 al bestaat. Er zijn pogingen geweest om PHP 6 uit te brengen in 2005 met support voor UTF8/unicode support. Maar door strubbelingen tussen de ontwikkelaars heeft die versie nooit het licht gezien.

De volledige argumentatie van deze discussie kun je lezen op de rfc van php.net door op deze link te klikken.

Grote veranderingen

Performance

De grootste redenen om naar PHP7 over te stappen is de performance. Bij benchmarks van de nieuwe versie tegenover PHP 5.6 en HHVM 3.7  kunnen we zien dat PHP 7 qua snelheid een een grote stap vooruit maakt.

Scalar type hints & return types

Een controversiële verandering bij PHP7 is het toevoegen van Scalar Type Hints & Return types. Dit komt erop neer dat je types kan meegeven aan variabelen. Neem volgende functie als voorbeeld:

function setNumber(int $number) {
     var_dump($number);
}

Hier zien we dat het $number argument als type een integer accepteert. Als we volgende lijn code proberen uitvoeren krijgen we dan ook een error.

 setNumber('My number');

Hoewel we een type meegeven aan ons argument kan met een standaard installatie van PHP7 nog steeds volgende code worden uitgevoerd.

 setNumber('30');

Als je ervoor wilt zorgen dat je alleen het juiste type kan meegeven aan een bepaalde functie moet dit aangezet worden.

 declare(strict_types=1);

Volgende code illustreert een voorbeeld waar de return type bij functies kan worden gedeclareerd:

class User {}

 function getUser() : User {
     return new User();
 }
 var_dump(getUser());

Anonieme classes

PHP heeft al enige tijd ondersteuning voor anonieme functies. Bij PHP 7 komt diezelfde feature erbij, maar dan voor klassen.

Anonieme klassen kunnen gebruikt worden bij situaties waarbij

  1. de klasse niet gedocumenteerd hoeft te worden
  2. de klasse maar één keer gebruikt wordt tijdens het uitvoeren
 var_dump(new class($i) {
     public function __construct($i) {
         $this->i = $i;
     }
});

Null Coalesce Operator

Voor mensen die het beu zijn om de isset() functie te gebruiken om te controleren of een variabele al dan niet bestaat is deze operator een goede toevoeging.

 //PHP 5.6
 if(isset($_GET['name'])) {
     $name = $_GET['name'];
 } else {
     $name = 'Geen Naam';
 }
 //of
 $name = isset($_GET['name']) ? $_GET['name'] : 'Geen Naam' ;
 //PHP 7
 $name = $_GET['name'] ?? 'Geen Naam';
echo $name;

Spaceship operator

Een volgende toevoeging aan PHP 7 is de Combined Comparison Operator (Spaceship operator), <=>.

Deze operator geeft -1 terug als de linkse operand kleiner is dan de rechtse, 0 als ze gelijk zijn of 1 als de linkse operand groter is dan de rechtse.Deze operator wordt vooral gebruikt bij het sorteren van arrays.

 //PHP 5.6
 function spaceship_compare($a, $b) {
     return ($a < $b) ? -1 : (($a > $b) ? 1: 0);
 }
 //PHP 7
 function spaceship_compare($a, $b) {
     return $a <=> $b;
 }

Grouped Imports

Bij het gebruik van een framework als Symfony en Laravel moeten classes geïmporteerd worden met het use statement. Als voorbeeld hebben we een App folder met daarin de klasses User en Car die beide de App-namespace gebruiken.

 //PHP 5.6
 if(isset($_GET['name'])) {
     $name = $_GET['name'];
 } else {
     $name = 'Geen Naam';
 }
 //of
 $name = isset($_GET['name']) ? $_GET['name'] : 'Geen Naam' ;
 //PHP 7
 $name = $_GET['name'] ?? 'Geen Naam';

echo $name;

Om deze klasses te importeren kan volgende code gebruikt worden:

//PHP 5.6
 use App\User;
 use App\Car;
 //PHP 7
 use APP\{User, Car};
 var_dump(new User());
 var_dump(new Car());

Conclusie

Hierboven zien we een klein deel handige features die PHP7 met zich meebrengt. Er zijn 2 operators toegevoegd die het controleren en vergelijken gemakkelijker maken. Anonieme klasses kunnen doorgegeven worden en imports kunnen netjes opgesomd worden.

De scalar type hints & return types is iets dat niet iedereen zal kunnen bekoren maar het voordeel blijft dat je kan kiezen wat je wel of niet gebruikt.

 

Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePrint this page
05/10/15

0 Reacties opWat is er nieuw aan PHP 7?"

Laat een bericht na