IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Valeur par défaut d'un paramètre de fonction dont on précise le type


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de ProgVal
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 636
    Points : 764
    Points
    764
    Par défaut Valeur par défaut d'un paramètre de fonction dont on précise le type
    Bonjour,

    Une des méthodes d'une de mes classes a le prototype suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function get(Module &$callingModule, string $tableName, string $conditions="1", array $orderBy=Array());
    Et cette ligne déclenche l'erreur :

    Fatal error: Default value for parameters with a class type hint can only be NULL
    Après tests, c'est string $conditions="1" qui pose problème. Je comprend parfaitement que le message d'erreur me dit que c'est impossible, mais je me pose trois questions :
    1. Pourquoi est-ce interdit de mettre autre chose que NULL ?
    2. Comment mettre quand même une valeur par défaut ?
    3. Pourquoi la paramètre suivant ne pose-t-il pas de problème ?

    Merci d'avance,
    ProgVal

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    [quote=ProgVal]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function get(Module &$callingModule, string $tableName, string $conditions="1", array $orderBy=Array());
    Alors soit j'ai raté un épisode, soit cela sera (peut ête) l'origine de ton erreur.
    La chose que j'ai pu lire et comprendre c'est que les seuls typages possibles les sont les Objets et les tableaux.

    Donc les string, int, integer, etc ... ne seraient pas autorisés.

    Le manuel Php :
    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).
    Exemples de typage d'objets


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?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!';
    }
    ?>
    Le typage de paramètre ne fonctionne qu'avec les variables de type object et object . Le typage avec les types traditionnels, tels que int et string , n'est pas supporté.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Toutes les explications me semble être dans la documentation :

    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é.
    http://www.php.net/manual/fr/languag...ypehinting.php

    Cette extension tend à aider les développeurs à faire de PHP un langage à type fort; cela peut être une bonne solution pour assurer le typage scalaire. Il fournit des classes pour gérer des objets tels que integer, float, bool, enum, etc.
    http://pl.php.net/manual/fr/intro.spl-types.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/10/2010, 20h11
  2. Réponses: 2
    Dernier message: 28/05/2007, 09h28
  3. Sub et valeurs par défaut d'un paramètre
    Par ldujard dans le forum ASP.NET
    Réponses: 1
    Dernier message: 30/01/2007, 17h57
  4. valeur par défaut pour un parametre de fonction
    Par maximenet dans le forum Langage
    Réponses: 2
    Dernier message: 19/07/2006, 10h29
  5. Réponses: 2
    Dernier message: 05/10/2005, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo