In PHP 7: Scalar type hints

Toegevoegd door Wouter J, 5 jaar geleden

In PHP 7: Scalar type hintsDit moet de meest besproken verandering in PHP 7 zijn: De introductie van scalar type hints .

In PHP 5 kon je al typehinten voor een array of een bepaalde instance van een object. Bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
function wilEenArray(array $xs) {
    // ...
}

wilEenArray(array('ciz', 'caz')); // werkt
wilEenArray('ciz'); // error
?>


Nu zijn hier in PHP 7 scalar type hints bij gekomen. Je kan nu bijvoorbeeld verplichten dat een argument een string is of een integer, etc. Op dit moment worden de int, float, string en bool type hints toegevoegd in PHP 7.

De feature komt in 2 versies: Strict mode en Weak mode.

Strict mode
Deze wordt gedefinieerd door declare(strict_types=1) als eerste (code)regel in je PHP bestanden te plaatsen. Het geldt dan alleen voor dat ene bestand.

Wanneer je een functie in strict mode aanroept zal PHP alle type hints verplichten. Je kan dan dus niet meer verwachtEenString(10) uitvoeren.

Wanneer je een functie in strict mode definieert zal PHP de return type verplichten. Waar de arguments type dus afhangt van het bestand waarin je het uitvoert, hangt de return type af van het bestand waar je het definieert. Dit omdat de eerste een probleem is van de caller van de functie, terwijl de tweede een probleem in de functie zelf is.

Weak mode
In weak mode worden type hints gebruikt om te typecasten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function wilEenString(string $str) {
    // ...
}

wilEenString(10); // $str = "10"
?>


Op deze manier ben je in de functie dus verzekerd van een type van het argument.

Geen type hints
Precies zoals je niet verplicht was om type hints voor arrays of objecten in PHP 5 te gebruiken, ben je ook vrij om geen type hints in PHP 7 te gebruiken.

De volledige RFC is te lezen op php.net.

Gerelateerde nieuwsberichten

02/08/2018 PHP brengt eerste beta uit voor PHP 7.3
04/01/2018 PhpMyAdmin was vatbaar voor ernstig veiligheidslek
20/07/2017 Vijf stappen om je website online te krijgen

 

Er zijn 4 reacties op 'In php 7 scalar type hints'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Ozzie PHP
Ozzie PHP
5 jaar geleden
 
1 +1 -0 -1
Dankjewel weer voor de update Wouter. Leuk dat je ons telkens op de hoogte houdt.

Jammer dat we nog even op versie 7 moeten wachten. Eind van het jaar zo'n beetje?
Wouter J
Wouter J
5 jaar geleden
 
1 +1 -0 -1
PHP 7 komt in November dit jaar. Een week geleden is de deadline bereikt voor het maken van RFCs voor PHP 7. Alle RFCs die nu niet in de "voting phase" zitten komen sowieso niet in PHP 7. Over de andere zal nog worden gestemd.

Uiterlijk 15 juni zullen alle RFCs in PHP 7 geïntegreerd zijn, gevolgd door 3 maanden van Release Candidate releases.
NOLot -
NOLot -
4 jaar geleden
 
0 +1 -0 -1
Super goede feature! Zitten echt een paar hele goede verbeteringen in php7. Jammer dat het daarna nog wel een aantal jaar zal duren voordat mijn host (en vele anderen) over gaat stappen naar php7 (als dat al uberhaupt ooit gebeurd:D)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Tobias Tobias
Tobias Tobias
4 jaar geleden
 
0 +1 -0 -1
Wel lastig, zo'n nieuwe versie. Als je meerdere sites bij meerdere hosts beheerd, moet je telkens controleren welke versie ze gebruiken, en dus eigenlijk 2 script-talen naast elkaar gebruiken. Kan verwarrend worden

Om te reageren heb je een account nodig en je moet ingelogd zijn.

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.