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 d'opérateurs []


Sujet :

Langage PHP

  1. #21
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ben non, ça aurait aucun intérêt.
    Ça retourne ce que retourne la méthode offsetGet, c'est quand même assez évident...

  2. #22
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pour toi peut-être pour d'autres non.
    Tu peux donner un exemple d'utilisation ?

  3. #23
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    yo

    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
    30
    31
     
    <?php
     
    class Foo implements ArrayAccess {
     
       public    $a=1;
       protected $b=2;
       private   $c=3;
     
       public function __construct() {
     
       }
     
       public function offsetGet($key) {
          if ( array_key_exists($key,get_object_vars($this)) ) {
             return $this->{$key};
          }
       }
       public function offsetExists ($key) {}
       public function offsetSet ($key, $val) {}
       public function offsetUnset ($key) {}
     
    }
     
    $o = new Foo;
    print_r($o['a']);
    print_r($o['b']);
    print_r($o['c']);
     
     
    ?>
    me suis pas embeté à implémenter les autres fonctions pour l'exemple ça suffit...
    ;-)

  4. #24
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ca fait plaisir de voir enfin une contribution constructive
    Merchi ska !

  5. #25
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    C'est pas bon du tout.
    Le test d'existence doit se faire dans offsetExists.

  6. #26
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    là je trouve que tu abuses un tantinet... t'es pas vexé que j'ai répondu à ta place quand même ? ;-)

    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
    30
    31
    32
    33
    34
    35
    36
    37
     
    class Foo implements ArrayAccess {
     
       public    $a=1;
       protected $b=2;
       private   $c=3;
     
       public function __construct() {
     
       }
     
       public function offsetGet($key) {
          if ( $this->offsetExists($key) ) {
             return $this->{$key};
          }
       }
       public function offsetExists($key) {
          return array_key_exists($key,get_object_vars($this));
       } 
       public function offsetSet($key, $value) {
          if ( $this->offsetExists($key) ) {
             $this->{$key} = $value;
          }
       }
       public function offsetUnset($key) {
          if ( $this->offsetExists($key) ) {
             unset($this->{$key});
          }
       } 
     
    }
     
    $o = new Foo;
    print_r($o['a']);
    print_r($o['b']);
    print_r($o['c']);
    ?>

  7. #27
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Pas besoin de vérifier que la valeur existe pour assigner une autre valeur a priori.

  8. #28
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    merci de la précision loufoque, je viens de vérifier et je confirme, mais je me demande alors a quoi peut bien servir l'implementation d'offsetExists puisqu'a priori le test d'existence implicite fonctionne aussi pour offsetSet...

    [edit]
    juste à vérifier l'existence, bien sûr
    [/edit]

  9. #29
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    euh Hunter, je parlais de la surcharge d'opérateurs qui n'existe pas en java !
    pas de la surcharge tout court

Discussions similaires

  1. [POO] Surcharge de constructeur
    Par loganblack dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2006, 12h26
  2. [POO] Surcharge de fonctions en JS
    Par shuygar dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/04/2006, 08h13
  3. [POO] surcharge d'operateur
    Par wamania dans le forum Langage
    Réponses: 6
    Dernier message: 20/04/2006, 14h31
  4. [POO] surcharger le constructeur
    Par wdionysos dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 15h42
  5. [POO] Surcharge de méthode
    Par ouioui2000 dans le forum Langage
    Réponses: 4
    Dernier message: 09/03/2006, 15h25

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