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).
Exemple 19.48. Exemples 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
;
}
/**
* Une autre fonction de test
*
* Le premier paramètre doit être un tableau
*/
public function
test_array
(array
$input_array
) {
print_r
(
$input_array
);
}
}
// 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
;
// Erreur fatale : Argument 1 doit être un objet de la classe AutreClasse
$maclasse
->
test
(
'salut'
);
// Erreur fatale : Argument 1 doit être une instance de AutreClasse
$foo
= new
stdClass
;
$maclasse
->
test
(
$foo
);
// Erreur fatale : Argument 1 ne doit pas être null
$maclasse
->
test
(
null
);
// Fonctionne : Affiche 'Bonjour le monde!'
$maclasse
->
test
(
$autreclasse
);
// Erreur fatale : Argument 1 doit être un tableau
$myclass
->
test_array
(
'a string'
);
// Fonctionne : Affiche le tableau
$myclass
->
test_array
(array(
'a'
,
'b'
,
'c'
));
?>
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 et array . Le typage avec les types traditionnels, tels que int et string , n'est pas supporté.