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] Problème de fonction suivant son appartenance à une classe ou non


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut [POO] Problème de fonction suivant son appartenance à une classe ou non
    Bonjour,

    Dans ma classe, j'ai une propriété $tab_date, qui est un tableau associatif.

    Pour le trier, j'utilise la fonction (callback) suivante (qui est pour l'instant hors de la classe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function cmp_tri_croissant($a,$b)
    	{
    		if($a == $b) return 0;
    		return ($a < $b) ? -1 : 1;
    	}
    Et voici l'appel de cette fonction dans la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uksort($this->tab_date, cmp_tri_croissant);
    Or, si je souhaite mettre la fonction cmp_tri_croissant dans la classe, l'appel ne marche pas car il lui manque des arguments.
    Comme j'ai pris cette fonction sur le net, je ne sais pas à quoi correspondent $a et $b. Pourriez-vous m'aider à intégrer cette fonction dans la classe ?

    Merci d'avance.
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Comme j'ai pris cette fonction sur le net, je ne sais pas à quoi correspondent $a et $b.
    Mauvaise réponse. Prendre des choses sur le net c'est bien, à la seule condition d'avoir un minimum de réfléxion derrière (surtout pour des choses aussi simples...).

    $a et $b c'est les variables que tu compares...

    Je vois pas pourquoi tu veux mettre cette fonction dans la classe car elle ne s'applique pas à un objet de cette classe, problème de conception objet...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Je sais bien que l'on compare deux éléments et je comprends le corps de la fonction.

    Cependant, ce que je ne comprends pas est d'où sortent les paramètres et comment ils sont envoyés.

    Mais si tu penses que c'est mieux de ne pas mettre cette fonction dans une classe...
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    uksort a juste besoin du nom de la fonction, après il s'en sert pour comparer 2 par 2 tous les éléments dudit tableau. Par exemple si tu as 1, 2, 3, uksort va se servir de la fonction donnée en paramètre pour comparer 1 avec 2 et les classer, puis peut-être 2 avec 3 etc...

    Mais si tu penses que c'est mieux de ne pas mettre cette fonction dans une classe...
    C'est pas que je le pense c'est que c'est comme ça, si tu comprends bien le principe de la POO tu n'auras pas de mal à comprendre ma réflexion...
    La fonction de comparaison est une fonction "utilitaire", elle ne s'applique en aucun cas aux instances de ta classe donc elle a rien à faire dedans.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Oui, je comprends bien.

    Par contre, avec mon utilisation de la fonction cmp_tri_croissant j'ai cette notice qui apparait :
    Notice : Use of undefined constant cmp_tri_croissant - assumed 'cmp_tri_croissant'

    Comment faire pour qu'elle ne s'affiche pas en faisant error_reporting(E_ALL); ?
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Comment faire pour qu'elle ne s'affiche pas en faisant error_reporting(E_ALL); ?
    mauvaise idée pardi si quelque chose s'affiche c'est qu'il y a une raison valable...


    Essaie en mettant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uksort($this->tab_date, "cmp_tri_croissant");
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Ah ben merci beaucoup !
    Il ne me manquait pas grand chose pour que cela marche.
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Comme souvent...

    Au passage je connaissais pas uksort, ça m'a pris 5 secondes et 2 dixièmes pour trouver la réponse dans la doc
    http://fr.php.net/manual/fr/function.uksort.php

    Bon courage.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  9. #9
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Ah ben désolée, mais sur le site où j'avais trouvée cette information, les guillemets n'étaient pas employés et je pensais que le problème venait d'ailleurs.
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 25/07/2009, 16h59
  2. Réponses: 6
    Dernier message: 19/05/2007, 10h04
  3. Réponses: 2
    Dernier message: 29/03/2007, 12h02
  4. Réponses: 4
    Dernier message: 11/05/2006, 15h34
  5. [POO] Problème lors de l'appel d'une propriété d'un objet.
    Par akecoocoo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 08h51

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