Manuel PHP

Typage objet

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) ou des tableaux (depuis PHP 5.1).

Example#1 Exemples de typage d'objets

  1. <?php
  2. // Un exemple de classe
  3. class MaClasse  
  4. { 
  5.    /**
  6.     * Fonction de test
  7.     *
  8.     * Le premier paramètre doit être un objet de type AutreClasse
  9.     */ 
  10.    public function test(AutreClasse $autreclasse) { 
  11.       echo $autreclasse->var; 
  12.    } 
  13.  
  14.  
  15.    /**
  16.    * Une autre fonction de test
  17.    *
  18.    * Le premier paramètre doit être un tableau
  19.    */ 
  20.    public function test_array(array $input_array) { 
  21.       print_r($input_array); 
  22.    }  
  23. }  
  24.  
  25. // Un autre exemple de classe
  26. class AutreClasse { 
  27.    public $var = 'Bonjour le monde!';  
  28. }  
  29. ?> 

Si le paramètre ne satisfait pas les conditions imposées, une erreur fatale est émise.

  1. <?php
  2. // Une instance de chaque classe
  3. $maclasse = new MaClasse;  
  4. $autreclasse = new AutreClasse;  
  5.  
  6. // Erreur fatale : Argument 1 doit être un objet de la classe AutreClasse
  7. $maclasse->test('salut');  
  8.  
  9. // Erreur fatale : Argument 1 doit être une instance de AutreClasse
  10. $foo = new stdClass;  
  11. $maclasse->test($foo);  
  12.  
  13. // Erreur fatale : Argument 1 ne doit pas être null
  14. $maclasse->test(null);  
  15.  
  16. // Fonctionne : Affiche 'Bonjour le monde!'
  17. $maclasse->test($autreclasse);  
  18.  
  19. // Erreur fatale : Argument 1 doit être un tableau
  20. $myclass->test_array('a string');  
  21.  
  22. // Fonctionne : Affiche le tableau
  23. $myclass->test_array(array('a', 'b', 'c'));  
  24. ?> 

Le typage fonctionne aussi avec les fonctions :

  1. <?php
  2. // Un exemple de classe
  3. class MaClasse { 
  4.    public $var = 'Bonjour le monde!';  
  5. }  
  6.  
  7. /**
  8. * Fonction de test
  9. *
  10. * Le premier paramètre doit être un objet de type MaClasse
  11. */  
  12. function MaFonction(MaClasse $foo) { 
  13.    echo $foo->var;  
  14. }  
  15.  
  16. // Fonctionne
  17. $maclasse = new MaClasse;  
  18. MaFonction($maclasse);  
  19. ?> 

Le typage de paramètre ne fonctionne qu'avec les variables de type object et array. Le typage avec les types traditionnels, tels que int et string, n'est pas supporté.


Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog