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

ORM PHP Discussion :

[Propel] Custom methods ne repondent pas


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Par défaut [Propel] Custom methods ne repondent pas
    Bonjour,
    J'ai un probleme (bizard) aves les custom methods. Apres avoir genere des classes attachees a une nouvelle table, je constate que les methodes de base a (getColum(), retrieveByPk(), ...) fonctionnent bien sur les classes de base et classes personnalisees. Mais les methodes personnalisees que j'ajoute a aux classes personnalisees ne fonctionnent pas.
    J'ai copie-coller les memes methodes dans une des anciennes classes personnalisees, elles fonctionnent bien.

    je m'explique autrement par des exemples:
    J'ai ajoute une nouvelle table nomme localite,
    j'ai fait generer les classes lib/model/ (Localite.PHP, LocalitePeer.php), lib/model/om/ (BaseLocalite.PHP, BaseLocalitePeer.php).
    J'ajoute la methode suivante a la classe LocalitePeer.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static function testFunction() {
    $testValue = "I work";
    return $testValue;
    }

    J'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     LocalitePeer::testFunction();
    dans modules/client/actions.class.php il NE repond PAS.
    J'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LocalitePeer::retriveByPk(2);
    dans modules/client/actions.class.php il repond bien.
    Je copie-coller le contenu de la method testFunction() dans lib/model/ItemPeer.php
    J'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemPeer::testFunction());
    dans modules/client/actions.class.php il repond bien.
    Je ne comprends pas pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LocalitePeer::testFunction()
    ne repond pas.

    J'ai déjà mis assez de temps dessus mais je ne trouve pas de solution.

    Merci pour votre aide.

    SYmfony 1.0.7 on Linux

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Symfony 1.0.7 avec Propel.... de très vieux souvenirs...

    Déjà, j'essayerais de passer le tout en 1.3 avec le module de compatibilité, au moins tu aurais un framework relativement à jour, même si la dernière modification de la 1.3 date de ce début d'année et qu'il n'y en aura plus d'autre, c'est toujours mieux que la 1.0 qui n'est plus maintenue depuis plus de 2 ans.

    Ensuite, je pense qu'il faudrait décortiquer le code de l'objet de base, bien que je ne vois pas trop comment, il semblerait qu'il intercepte la demande avant que l'enfant ne la voie arriver. En effet, la méthode retriveByPk() n'existe pas en elle même, elle est traitée dynamiquement.

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Par défaut
    Comment est-il possible que la classe de base (ou une classe de parent) intercepte une demande et ne pas la(damande) faire arriver a ses enfants?

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Et bien ... (air pensif et désolé)

    Je dirais que c'est impossible.

    Mais je ne vois aucune raison pour que tes méthodes static ne marchent pas.

    Donc, je me dis qu'il doit bien y avoir un truc plus space que la normale.

    Vérifie dans ton cache, je n'ai plus la structure en tête pour 1.0 mais tu devrais avoir un fichier utilisé par l'autoload qui reprend dans une table (array) les dossiers où chercher pour faire de l'autoload. Vérifie si tu n'as pas deux dossier qui contiendraient deux versions différentes de ton objet LocalitePeer. Tu prendrais le premier (non modifié par toi) et le deuxième (modifié par toi) ne serait, lui, jamais chargé.

    C'est un peu plus crédible comme erreur que le parent qui prend le pas sur l'enfant.

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Par défaut
    Je ne l'ai pas vu. Pouvez vous me donner une idee de ce que ressemble ce fichier (qui me rend la vie dificile)?

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Non, désolé.

    Je n'ai plus aucune application qui tourne en 1.0. En fait, je n'en ai jamais eu, les développements commencés à cette époque ayant tous migré sous 1.1 (et maintenant 1.4) avant de passer en exploitation.

    Je ne sais plus comment est géré l'autoload en sf 1.0.

    Une solution pourrait aussi être d'essayer de tout basculer en 1.3 avec le module de compatibilité sf 1.0.

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

Discussions similaires

  1. [Debutant]KeyListener sur JFrame ne repond pas
    Par Romain93 dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 16/10/2008, 17h44
  2. Réponses: 2
    Dernier message: 16/11/2006, 11h55
  3. Service windows qui ne repond pas
    Par youcef81 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 03/06/2006, 14h38
  4. La commande make ne répond pas
    Par hammag dans le forum Linux
    Réponses: 2
    Dernier message: 02/05/2006, 10h03
  5. Pop3d et imapd ne répondent pas
    Par frochard dans le forum Réseau
    Réponses: 1
    Dernier message: 22/12/2005, 15h13

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