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 :

[POO] Surcharge et polymorphisme


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut [POO] Surcharge et polymorphisme
    Bonjour à vous tous,

    Moi aussi, je me suis mis à la POO en PHP il y a peu.
    La POO, je pense en connaître les principes pour l'avoir étudiée avec Java (et le bouquin Tête la première).
    Mais bon, moi, c'est PHP et je voulais passer du procédural à la POO donc me voilà.

    Et à ce propos, je me posais une petite question : le polymorphisme et la surcharge sont-ils possibles en PHP ?

    J'ai l'impression que non... Est-ce que je me trompe ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si par surcharge, tu entends "plusieurs méthodes d'une classe portant le même nom mais avec des paramètre différents", alors non, ça ne marche pas en php. En revanche tu peux rendre des paramètres optionnels, en leur donnant une valeur par défaut.
    La notion de surcharge existe en php, mais ne fonctionne pas vraiment de la même façon surcharge (perso je ne m'en suis jamais servie)

    En ce qui concerne le polymorphisme, la question a été posée là : http://www.developpez.net/forums/d78...polymorphisme/
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    A propos de la surcharge,
    "plusieurs méthodes d'une classe portant le même nom mais avec des paramètres différents",
    les trois fonctions func_num_args , func_get_arg et func_get_args,
    ne permettent-elles pas finalement de la mettre en oeuvre ?
    Fred

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Si, ou les valeurs par défaut des arguments qui les rendent optionnels, mais ça oblige à écrire des blocs en fonction du nombre d'arguments ou déléguer les fonctions.
    C'est pas catastrophique mais ça reste de la bidouille. En terme de maintenance c'est un peu plus lourd.

    En même temps ça a ses avantage aussi donc l'un dans l'autre on peut dire que c'est juste "différent"

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut
    Hum... Je dois avouer que je coince un peu, là, même en ayant lu l'explication de la doc.
    Je vois pas très bien comment ça fonctionne avec des arguments optionnels.
    Quelqu'un pourrait-il donner un exemple ?

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Par optionnel, je veus dire que tu donnes une valeur par défaut à certains de tes arguments
    Voir :Fonctions en php
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [POO] surcharge d'operateur
    Par wamania dans le forum Langage
    Réponses: 6
    Dernier message: 20/04/2006, 15h31
  2. [POO] surcharger le constructeur
    Par wdionysos dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 16h42
  3. [POO] Surcharge de méthode
    Par ouioui2000 dans le forum Langage
    Réponses: 4
    Dernier message: 09/03/2006, 16h25
  4. [POO] Surcharge d'opérateurs []
    Par Amnesiak dans le forum Langage
    Réponses: 28
    Dernier message: 11/11/2005, 13h44
  5. Surcharge et Polymorphisme
    Par Hell dans le forum C++
    Réponses: 6
    Dernier message: 12/01/2005, 21h50

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