Spécifie si le contenu d'un élément est modifiable ou non
Quand vous passez des paramètres à une méthode, vous pouvez exiger de ces paramètres un type à respecter, c'est le Typage objet
Quand vous passez des paramètres à une méthode, vous pouvez exiger de ces paramètres un type à respecter.
PHP 5 introduit le typage objet implicite (littéralement, Type Hinting). Les méthodes peuvent maintenant imposer aux paramètres d'être des objets (en spécifiant le nom de la classe dans le prototype de la méthode) ou des tableaux (depuis PHP 5.1).
Cependant, si NULL est utilisé en tant que valeur par défaut du paramètre, il sera autorisé comme argument pour tous les futurs appels.
Pour bien comprendre, on passe à l’exemple.
Exemple :
Exemple : Copier le code
<?php // Un exemple de classe class MaClasse { /* Méthode de test Le premier argument doit être un objet de type AutreClasse */ public function test(AutreClasse $autreclasse) { echo $autreclasse->var; } /* Une autre méthode de test Le premier argument doit être un array (tableau) */ public function test_array(array $tableau) { print_r($tableau); } } // Un autre exemple de classe class AutreClasse { public $var = 'Bonjour le monde!'; } //Un objet $maclasse $maclasse = new MaClasse; //Un onjet autreclasse $a = new AutreClasse; /* Appel de la méthode test() qui affiche "Bonjour le monde"*/ $maclasse->test($a); echo '<br />'; // Appel de la méthode test_array() qui affiche le tableau $tab = array('a', 10, 'b'); $maclasse->test_array($tab); echo '<br />'; $maclasse->test_array(array(10,'ab',1254)); ?>
En appelant la méthode test() on doit lui passer un argument de type AutreClasse, et c’est ce que nous avons fait.
Puisque $a est un objet de type AutreClasse.
De même pour l’appel de la méthode test_array() qui demande un argument de type array.
En conclusion pour exiger un type dans une méthode on va donc précéder l'argument ($a) du type demandé (AutreClasse).
comme suit :
public function test(AutreClasse $autreclasse)
Note :
Le type de la variable à spécifier doit obligatoirement être un nom de
classe (un objet) ou alors un tableau. Si vous voulez exiger un tableau,
faites précéder le nom du paramètre qui doit être un tableau du mot-clé array comme ceci :
public function test_array(array $tableau).
Il n’est pas possible d’exiger autre type comme un entier (integer) ou une chaîne de caractère (string). …
Le typage fonctionne aussi avec les fonctions :
Exemple :
Exemple : Copier le code
<?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 $bar) { echo $bar->var; } // Fonctionne $maclasse = new MaClasse; MaFonction($maclasse); ?>
Pour que le typage objet autorise les valeurs NULL :
Exemple :
Exemple : Copier le code
<?php /* On accepte la valeur NULL */ function test(stdClass $obj = NULL) { } test( NULL); test( new stdClass); ?>