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

PHP & Base de données Discussion :

unserialize object __PHP_Incomplete_Class


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Par défaut unserialize object __PHP_Incomplete_Class
    Bonjour tout le monde,

    Je bloque sur une fonction que je souhaite implémenter.


    Il s'agit de mettre en cache des data. (Il s'agit d'une collection d'objets)

    Pour se faire, je les serialize(). Ici tout se passe bien.

    En revanche, lorsque je récupère mes datas, et que je fais un unserialize() sur ces dernières, mes custom class ne sont pas remontées.
    J'ai à la place de mon objet, un objet de type : __PHP_Incomplete_Class, avec un l'ID de mon objet.

    Du coup, je dois le reconstruire à la mano l'objet... et je perds tout l'intérêt de la mise en cache.

    Si vous avez des pistes, d'avance merci,

    Un dév au bout du bout !!!!

  2. #2
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Par défaut
    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
     
    if (!$cache->hasItem("xxx_".$edition->getId())) {
     
                $dql = "SELECT c FROM Application\Entity\......... c LEFT JOIN ........ LEFT JOIN ..........";
                $xxx = $this->getServiceManager()->get('entity_manager')->createQuery($dql)->execute(array(
                    '.....'    =>  .........
                ));
     
                $serialized = $serializer->serialize($xxx);
     
                $cache->addItem("xxx_".$...->getId(),$serialized);
     
    }else{
     
                $xxx = $cache->getItem("xxx_".$...->getId());
                $xxx = $serializer->unserialize($xxx);
    }

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    Vu que tu sérialises une collection d'objets, il faudrait se pencher sur le type d'objet que tu y ranges dedans.
    N'oublie pas que les ressources ne sont pas sérialisables.
    Quand tu déserialises, il faut que le moteur ait connaissance de l'implémentation des classes à déserialiser.

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Par défaut
    J'ai vu ça hier, que les classes devaient être définies avant l'appel de mon unserialize, or je suis sous Zend2, du coup mon autoload/mapper est sensé déjà me charger les classes... (même en ajoutant un use classname en haut de fichier, aucune changement, j'ai même essayé un require_once à l'arrache dans le code... rien... toujours un __PHP_Incomplete_Class)

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Par défaut
    J'ai avancé, en fait, le résultat de mon dql se construit avec les classes de mes proxies de Doctrine...
    soit des classes de type Orm\Resource\Proxy\__CG__\...

    Du coup, lors du unserialize... il ne trouve pas ses classes... normal... Par contre à solutionner... ça pique.

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Par défaut
    La solution était dans la doc doctrine :

    http://doctrine-orm.readthedocs.org/...iguration.html
    32.5. Autoloading Proxies

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/10/2011, 17h00
  2. Réponses: 7
    Dernier message: 29/08/2008, 15h27
  3. [DDL] "object <table> is in use"
    Par TMuet dans le forum SQL
    Réponses: 4
    Dernier message: 26/01/2004, 10h18
  4. Réponses: 8
    Dernier message: 21/11/2003, 18h38
  5. Comment inserer des donnee de type Large Object !!
    Par josoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2003, 11h21

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