HTML5 - CSS 2.x/3
PHP / MySQL
FORTH ...

Déclaration des fonctions

Il sera possible de définir le type de valeur que doit retourner la fonction.
function testTable(): array {
    return [];
}
 
function testDateTime(): DateTime { 
    return null; // incorrect
}

Notre fonction testTable renverra systématiquement une donnée de type array.

Tandis que notre fonction testDateTime renverra systématiquement une donnée de type DateTime.

Cette déclaration du type de donnée en sortie de fonction n'est pas une obligation.

En ajoutant des indications de type scalaire et en permettant des exigences strictes, on espère pouvoir écrire des programmes PHP plus corrects et auto-documentés. On a également plus de contrôle sur le code et rendre ainsi le code plus facile à lire.

Par défaut, les déclarations de type scalaire sont non strictes, ce qui signifie qu'elles tenteront de changer le type d'origine pour qu'il corresponde au type spécifié par la déclaration de type. En d'autres termes, si vous passez une chaîne qui commence par un nombre dans une fonction qui nécessite un flottant, elle saisira le numéro depuis le début et supprimera tout le reste. Passer un flottant dans une fonction qui nécessite un int deviendra int. Exemple strict:

function getTotal(float $a, float $b) {
    return $a + $b;
}
 
getTotal(2, "1 week"); 

va afficher:

3
getTotal(2.8, "3.2");

va afficher:

6
getTotal(2.5, 1);

va afficher:

3.5

Sans les types stricts activés, PHP tente de convertir ou de modifier ces arguments pour qu'ils correspondent au type spécifié dans la fonction.

Ainsi, lorsque nous appelons getTotal avec des types non-stricts en utilisant un int de 2 et une chaîne de "1 week", PHP les convertit en "floats". Le premier argument serait changé en 2.0 et le second argument serait changé en 1.0. Cependant, vous obtiendrez un avertissement: parce que ce n'est pas une valeur numérique bien formée. Il retournera alors une valeur de 3. Ce qui serait complètement faux si nous essayions d'ajouter des jours.

Les nouvelles déclarations de type peuvent rendre le code plus facile à lire et obligent les objets à être utilisés de la manière prévue. Certaines personnes préfèrent utiliser des tests unitaires pour vérifier l'utilisation prévue à la place. Avoir des tests automatisés pour votre code est fortement recommandé, mais vous pouvez utiliser à la fois les tests unitaires et les déclarations de type. De toute façon, PHP ne vous oblige pas à déclarer les types, mais il peut certainement rendre le code plus facile à lire. Vous pouvez voir directement au début d'une fonction, ce qui est requis et ce qui est retourné.