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 :

Auto-incrémentation avec l'interface ArrayAcess


Sujet :

Langage PHP

  1. #1
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    Points : 264
    Points
    264
    Par défaut Auto-incrémentation avec l'interface ArrayAcess
    Salut.

    Le code suivant issue d'un exemple du bouquin PHP5 Avancé 4 eme édition concernant l'auto-incrementation avec l'interface ArrayAcess.

    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
    <?php
    class tableau implements ArrayAccess {
    private $tableau = array() ;
    function offsetExists( $index ) {
    return isset( $this->tableau[$index] ) ;
    }
    function &offsetGet( $index ) {
    // Notez le & devant le nom de la fonction
    return $this->tableau[$index] ;
    }
    function offsetSet( $index, $valeur ) {
    return $this->tableau[ $index ] = $valeur ;
    }
    function offsetUnset( $index ) {
    unset( $this->tableau[ $index ] ) ;
    }
    }
    $tab = new tableau() ;
    if ( !isset($tab[42]) ) {
    $tab[42] = 1 ;
    }
    echo ++$tab[42] ; // Affiche 2
    unset( $tab[42] ) ;
    j'ai l'erreur suivante

    Fatal error: Declaration of tableau::offsetGet() must be compatible with that of ArrayAccess::offsetGet() in ...
    Ce qui signifie en gros que le renvoie par référence de la fonction offsetGet n'est pas compatible avec l'interface ArrayAccess. Pourtant le livre impose ce passage...


    Merci d'avance.

  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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Dans mon bouquin PHP5 avancé, 5e editione, j'ai le même code que toi mais sans le & devant offsetGet

    Qu'est-ce que tu essayes de faire exactemnt ?
    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
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    Points : 264
    Points
    264
    Par défaut
    j'essaye juste d'etudier les exemples du livre.
    C'est vrai que sans le & ça marche

Discussions similaires

  1. Réponses: 11
    Dernier message: 19/07/2010, 23h48
  2. Réponses: 2
    Dernier message: 27/04/2009, 11h39
  3. Champ auto-incrémenté avec année incorporée
    Par Dendrite dans le forum Débuter
    Réponses: 7
    Dernier message: 07/03/2009, 10h17
  4. Problème de mise à jour des champs Auto incrémentés avec VB6.
    Par NHenry dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/05/2007, 16h06
  5. Champ auto incrémenté avec MyBase
    Par selmak7 dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/04/2007, 10h46

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