Le typage explicite en programmation orientée objet PHP

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 utilse le typage explicite en POO PHP

Définition de propriétés pour notre typage explicite

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 :

Les arguments doivent être du bon type à cause du typage explicite en POO PHP

Nos méthodes s’exécutent bien

Si on tente de passer un argument d’un mauvais type, le PHP nous renvoie une erreur :

On tente de passer un argument de mauvais type avec typage explicite en POO PHP

Le PHP renvoie une erreur fatale car l’argument passé est de mauvais type

Laisser un commentaire