• # Ma solution

    Posté par . En réponse au message Typage des paramètres d'une fonction. Évalué à 2.

    Bon, finalement, voilà la solution à laquelle je me suis résigné.

    Si un paramètre de méthode est de type simple, je ne spécifie pas son type dans le prototype de la méthode :

    public function plop($str)

    Par contre en début de méthode je vérifie le type du paramètre :

    Utils::checkType('string', $str);

    Compatible avec n'importe quel type simple ou classe utilisateur ; déclenche une exception si le type de la variable fournie n'est pas celui attendu.

    Inversement, si un paramètre de méthode est une instance de classe (système ou utilisateur), je spécifie la classe attendue dans le prototype :

    public function plop(MonType $object)

    Par ailleurs, je peux récupérer le type d'un paramètre :

    Utils::getParameterType(ReflectionParameter $param);

    Si $param est de type simple, la méthode retourne null ; sinon, elle retourne le nom de la classe correspondante.