PHP 7 en 8

PHP

Gepubliceerd: 15.09.2023

PHP is nog steeds een van de meest gebruikte ontwikkelingstalen op het web en wordt nog met regelmaat vernieuwd en verbeterd. In november 2020 is PHP8 uitgekomen, deze versie kwam met prestatie verbetering en nieuwe features. PHP7 Support is gestopt in november 2022.

Aantal nieuwe features

PHP8 is rijk aan nieuwe features. Ze zullen in dit artikel ook niet allemaal aan bod komen, maar een paar grote en interessante nieuwe features zal ik hier wel beschrijven.

Named Arguments

“Named Arguments” zorgen ervoor dat je arguments door kan geven aan een functie door middel van parameter namen mee te geven met de value.


  function greet(string $name, int $age) {
    	echo "Hello, $name! You are $age years old.";
  }
  
Deze functie bevat 2 parameters en kan op verschillende manieren aangeroepen worden. Op deze manier geef je op volgorde alle parameters van de functie door:

  greet("John Doe", 30);
  
Je kunt dit in PHP 8 ook op de volgende manier doen:

  great(name=”John Doe”, age=30);
  great(age=30, name=”John Doe”);
  

Constructor Property Promotion

Wanneer je in PHP een class maakt en properties wilt doorgeven via de constructor deed je dat voor PHP8 op deze manier:

  class MyClass {
	private string $name;
	private int $age;

	__constructor(string $name, int $age) {
		$this→name = $name;
		$this→age = $age;
	}
  }
De properties worden boven in de class gedefinieerd en in de constructor toegewezen. In PHP8 kun je dit op de volgende manier doen:

  class MyClass {
	__constructor(private string $name, private int $age) {
	}
  }
Dit is hetzelfde resultaat, maar zoals je ziet met een stuk minder code.

Union Types

Wanneer je in PHP7 een variable meerdere types wilde toekennen, bijvoorbeeld een string of null, dan moest je gebruik maken van de annotations:

  /**
  * @param string|null $parameter
  */
  function my_function( $parameter ) { ... }
In PHP8 kun je meerdere types toevoegen voor een parameter:

function my_function( string|null $parameter ) { ... }

Match Expression


  switch( $type ) {
    case 'one':
      $variable = “X”;
      break;
    case 'two':
      $variable = “Y”;
      break;
    case 'three':
      $variable = “Z”;
      break;
  }
In PHP8 is match geintroduceerd.

  $variable = match( $type ) {
    'one' => “X”,
    'two' => “Y”,
    'three' => “Z”,
  }
Dit is een veel eenvoudigere en kortere manier om hetzelfde resultaat te bereiken.

Nullsafe Operators

Voorheen moest je in PHP bij elke stap van je proces controleren of een variable null was of niet. De zorgt voor veel lijnen en veel code:

  if( null !== $user ) {
    if( null !== $user->profile ) {
      echo $user->profile->getAvatar();
    }
  }
Hetzelfde resultaat is nu te bereiken door:

  echo $user?→profile?→getAvater();

Prestaties

PHP8 is weer net iets sneller dan PHP7. Bij elke update van de versie wordt de prestatie van PHP verbeterd. Het verschil tussen 7 en 8 is niet zo groot als tussen bijvoorbeeld versie 5 en 7.