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] POO : Doutes concernant la structure de mes classes [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [POO] POO : Doutes concernant la structure de mes classes
    Bien le bonjour !


    Après moult tergiversations, et quelques recherches sur la toile totalement non-concluantes, je m'en remets à vous !

    Je travail actuellement sur le diagramme de classe d'un de mes projets, et j'ai un gros doute. Je bloque.

    J'ai une classe Promo, et je voudrais récupérer une collection d'objets promo. Or je ne sais pas comment et ou gérer cette collection ainsi que les méthodes en rapport. Une classe supplémentaire juste pour ca ne me parait pas correct, mais la collection au seins même de ma classe Promo me semble tout aussi peu probable (quoi que en static pourquoi pas... )

    Du coup si quelqu'un aurai des idées a ce sujet, des pistes... Ça serait super.
    Merci d'avance.

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    Pourquoi pas une classe de plus ?

    Mais si tu n'y tiens pas, cela dépend du contenu de cette collection. Si elle ne contient que les objets, tu peux juste utiliser un tableau ou un hash.

    Si elle contient des méthodes, la classe supplémentaire peut-être utile. Et il existe des outils utiles dans la SPL pour cela :

    SplObjectStorage

    ou tout simplement

    ArrayObject
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Pourquoi pas une classe de plus ?
    Moi ce qui me trouble un peu c'est que mes classes sont des choses 'concrètes' comme une promo, un produit, etc.
    Le fait de créer une classe nommée par exemple RecherchePromo me parait étrange (en partie a cause du fait qu'elle me semble 'abstraite'. Après c'est vrai que je suis loin d'être expert en POO donc bon je me fais peut être de fausses idées).


    Mais si tu n'y tiens pas, cela dépend du contenu de cette collection. Si elle ne contient que les objets, tu peux juste utiliser un tableau ou un hash.
    Quel est l'intérêt du hash ? Je viens de faire un tour sur php.net mais la description est très abstraite, je n'ai pas tout compris...


    Si elle contient des méthodes, la classe supplémentaire peut-être utile.
    Bah j'aurai effectivement besoin de quelques méthodes, ne serait-ce que pour trier ma collection.


    Et il existe des outils utiles dans la SPL pour cela : SplObjectStorage ou tout simplement ArrayObject
    Quel sont les avantages/inconvénients de ces deux classes ? Et surtout qu'apportent elles d'utile par rapport à un tableau classique ou j'aurais mis mes objets dedans ? Me permettent elles de ne pas créer de classe supplémentaire ?


    En tout cas merci beaucoup pour ta réponse rapide ^^

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Un exemple assez simple

    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
    24
    25
    26
    27
     
    <pre>
    <?php
    class Foo extends ArrayObject {
     
        protected $_value = "Attribut supplémentaire";
     
        public function getValue() {
            return $this->_value;
        }
     
    }
     
    $myFoo = new Foo();
     
    for ($i=1; $i<5; $i++) {
        $o = new StdClass();
        $myFoo->append($o);
    }
     
    print_r( $myFoo->getValue() );
     
    print_r ( $myFoo->count() );
     
    print_r ( $myFoo );
     
    //etc...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Oki doki, merci beaucoup pour ces éclaircissements ^^

    Du coup je vais bien faire une classe GestionPromo qui gèrera ma collection.

    Encore une petite question toutefois, bien que j'ai compris l'utilisation d'ArrayObject, quel intérêt y a t'il de l'utiliser plutôt qu'un tableau classique ? (outre le fait que de base ArrayObject intègre des méthodes pouvant parfois être utiles, mais qui d'après ce que j'ai vu ne sont pas non plus indispensables)

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par VilainMelkor Voir le message
    Oki doki, merci beaucoup pour ces éclaircissements ^^

    Du coup je vais bien faire une classe GestionPromo qui gèrera ma collection.

    Encore une petite question toutefois, bien que j'ai compris l'utilisation d'ArrayObject, quel intérêt y a t'il de l'utiliser plutôt qu'un tableau classique ? (outre le fait que de base ArrayObject intègre des méthodes pouvant parfois être utiles, mais qui d'après ce que j'ai vu ne sont pas non plus indispensables)
    Si ta collection doit comporter des méthodes en plus de ses membres, tu devras la composer avec un tableau. Ce qui est un choix tout à fait valable.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Oki !

    Merci encore (et encore ^^)

    Bonne journée à tous pi merci d'être là pour nous, pov' petits dev encore un poil débutant =)

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Comme dit cela dépend si ta collection d'objet doit contenir d'autre propriété ou fonction que simplement un tableau d'objet.

    Si c'est le cas utilise un objet autrement utilise un tableau.

    Tu gagnes du temps de dev et c'est pas forcément moins claire comme code. Sinon tu vas finir par créer un classe pour gérer les strings (réf à java).

    A notez qu'il existe des fonctions permettant de travailler sur des tableaux d'objet (tri, mélange, ect.)

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut les jointures sous laravel
    bonjour tous le monde

    j'ai un soucis avec la jointure cross sous laravel ça me donne
    DB::table('table1')
    ->leftJoin('table2', 'xxxid', '=', 'xxx_id')
    ->crossoin('table3', 'xxxx.id', '=', 'xxxx_id')
    ->select(xxxxxxxxxxxxxxxxx)
    ->get();

    Call to undefined method Illuminate\Database\Query\Builder::crossJoin()

    quelqu'un peut m'aide ??

    merci d'avance

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

Discussions similaires

  1. POO - Piste pour structurer mes classes
    Par laloune dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2012, 15h43
  2. Réponses: 3
    Dernier message: 05/12/2008, 17h41
  3. [POO] Liaisons entre mes classes
    Par cahnory dans le forum Langage
    Réponses: 4
    Dernier message: 14/03/2008, 16h20
  4. Réponses: 8
    Dernier message: 19/10/2007, 16h32
  5. Réponses: 3
    Dernier message: 12/10/2005, 09h23

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