PHP 5 introduit le typage objet implicite (littéralement,
Type Hinting). Les fonctions peuvent maintenant
imposer aux paramètres d'être des objets en spécifiant le nom de la classe
dans le prototype de la fonction.
Exemple 19-47. Exemple de typage d'objets
<?php // Un exemple de classe class MaClasse { /** * Fonction de test * * Le premier paramètre doit être un objet de type AutreClasse */ public function test(AutreClasse $autreclasse) { echo $autreclasse->var; } }
// Un autre exemple de classe class AutreClasse { public $var = 'Bonjour le monde!'; } ?>
|
Si le paramètre ne satisfait pas les conditions imposées, une erreur fatale est émise.
<?php // Une instance de chaque classe $maclasse = new MaClasse; $autreclasse = new AutreClasse;
// Fatal Error: Argument 1 must be an object of class AutreClasse $maclasse->test('salut');
// Fatal Error: Argument 1 must be an instance of AutreClasse $foo = new stdClass; $maclasse->test($foo);
// Fatal Error: Argument 1 must not be null $maclasse->test(null);
// Fonctionne : Affiche 'Bonjour le monde!' $maclasse->test($autreclasse); ?>
|
Le typage fonctionne aussi avec les fonctions :
<?php // Un exemple de classe class MaClasse { public $var = 'Bonjour le monde!'; }
/** * Fonction de test * * Le premier paramètre doit être un objet de type MaClasse */ function MaFonction(MaClasse $foo) { echo $foo->var; }
// Fonctionne $maclasse = new MaClasse; MaFonction($maclasse); ?>
|
|
Le typage de paramètre ne fonctionne qu'avec les variables de type
object. Le typage avec les types traditionnels, tels
que int et string, n'est pas supporté.