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.

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é.