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 :

array dans un objet qui est lui meme dans un tableau d'objet


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut array dans un objet qui est lui meme dans un tableau d'objet
    Bonjour,

    J'ai un objet action qui contient un array.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class FmBox_Action
    {
        protected $idAction;
        protected $typeAction;
        protected $paramAction = array();
        function __construct(){
     
        }
        /* Destructeur */
        function __destruct(){
     
        }
    }
    Cet objet est mis dans un tableau d'objet TabAction qui implemente iterator.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class FmBox_TabAction implements Countable, Iterator {
        protected $_tab = array();
        private $_idMax = 0;
     
        /* Ajoute une action dans le tableau d'objet */
        public function add(FmBox_Action $object) {
            $this->_idMax ++;
            $object->setIdAction($this->_idMax); // IdAction = indice du tableau de TabAction  ou  $this->_tab[$i]->idAction = $i;
            $this->_tab[$this->_idMax] = $object;
     
            return $this->_idMax;
        }
    ...
    quand je cree mon objet action . Tout est bon. Mon tableau se trouve bien dans mon objet.

    Par contre quand j'ajoute l'objet action à tabAction. Toutes mes données sont accessibles sauf le champs paramAction qui est = à array().

    Je ne vois pas ce qui cloche. Sauf à ne pas pouvoir mettre un array dans un objet qui est lui-même dans un tableau d'objet.

    Quelqu'un est il au courant de cette restriction ou faut il créer ce champs différemment

    Merci

  2. #2
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 51
    Points
    51
    Par défaut
    salut

    une fois la lecture de l'objet dans ton tableau faudrait peu être itéré le tableau dans l'objet.

    tu implémente iterator pour le tableau d'objet, ok, mais pour le tableau dans l'objet ta rien implémenté.

    a plus

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    En fait, mon probleme si situe au niveau du unserialize depuis ma session.
    Dans mon _tabAction, tout est bon. quand je le crée.
    si dans ma page je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sSerialized = serialize($tabAction);
    $oUnserialized = unserialize($sSerialized);
    C'est bon. Je retrouve bien mon array dans mes objets.

    Je met mon objet en session via cette cde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sessionFmBox->tabAction = serialize($tabAction);
    Quand je xdebug ma variable, ma sérialisation est bonne. Je retrouve bien mes champs comme il faut.
    C'est quand je unserialise mon objet que ca marche plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //session_start();
    Zend_Session::start();
    $sessionFmBox = new Zend_Session_Namespace('FmBox');
    if ($sessionFmBox->tabAction == true) {
        // un tab_action exist
        $tabAction = unserialize($sessionFmBox->tabAction);
    ....
    C'est maintenant que mon tabAction n'est plus bon.
    S'il faut mettre un __wakeup, je vois pas ce que je dois mettre dedans.
    merci

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 51
    Points
    51
    Par défaut
    quand tu deserialise c'est sur une variable basic ou une instance d'objet

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    ok, muchas gracias amigo.
    En fait mon pb vient du fait que je suis en autoload. Visiblement, quand on unserialize, l'autoload n'est pas appelé, donc, l'include du source n'est pas fait, donc l'objet reconstruit est bancal.
    Si je fais un new avant de mon objet, ca marche.
    pour être puriste, j'ai cherché dans la doc php, j'ai trouvé que spl_autoload_register, pouvez resoudre mon pb. Est ce qu'il y a un equivalent quand on utilise Zend_Loader_Autoloader

    encore merci

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/06/2012, 10h33
  2. modifier des lignes dans une bdd qui est la meme
    Par flash22 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 29/03/2011, 14h14
  3. Réponses: 21
    Dernier message: 12/04/2007, 13h45
  4. Réponses: 2
    Dernier message: 26/11/2006, 10h51
  5. comment acceder a un component lui meme dans un panel
    Par mimosa7 dans le forum Composants
    Réponses: 2
    Dernier message: 16/11/2003, 23h02

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