Qu’est-ce que le typage explicite ?
Le typage explicite a été introduit avec le PHP5 et correspond au fait de pouvoir imposer un typage aux paramètres de nos méthodes.
Les paramètres vont alors pouvoir être de type objet, interface, tableau ou de type callable (fonctions de rappel).
Afin que cela fonctionne, il faudra également spécifier le nom de la classe dans la déclaration des méthodes pour lesquelles on souhaite utiliser le typage explicite.
Autre limitation du typage explicite à l’heure actuelle : on ne peut pas spécifier de type scalaire comme int
ou string
.
Cas d’utilisation et intérêt du typage explicite
Pour faire simple, le typage explicite va nous permettre de spécifier le type de données que notre méthode doit accepter (de lui imposer un type de données à recevoir).
Concrètement, cela permet de restreindre les données qui vont pouvoir être passées à une méthode (par exemple, on peut utiliser le typage explicite pour demander à une méthode de n’accepter que les données liées aux instances d’une certaine classe).
Le typage explicite va en particulier nous permettre de passer des objets complets à nos méthodes. C’est l’utilisation la plus fréquente que nous en ferons.
Cas pratique d’utilisation du typage explicite
Pour ce nouvel exemple, nous allons récupérer nos deux classes Humain
et Francais
qu’on va modifier.
Nous allons tester le typage explicite en forçant les types objet et tableau pour deux de nos méthodes.
On définit nos méthodes TestTypeObjet()
et testTypeTableau()
dans notre classe Humain
.
On impose un objet de la classe Francais
en argument pour notre première méthode TestTypeObjet()
. Le but de cette méthode va être tout simplement de retourner le score total lié à notre objet actuellement. Comme vous pouvez le voir, notre méthode additionne la valeur contenue dans la propriété $scorefr
à celle de la propriété $score
.
Ensuite, on impose un argument de type tableau à notre deuxième méthode testTypeTableau()
.
Voici donc finalement le script principal et le résultat :
Si on tente de passer un argument d’un mauvais type, le PHP nous renvoie une erreur :