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 -> principe de création des objets


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 42
    Points
    42
    Par défaut POO -> principe de création des objets
    Bonjour,

    Je débute avec la programmation objet en php, et j'aurais 2-3 petites question sur le principe de programmation..

    Par exemple, je dois gérer les partenaires d'une entreprise :
    1) dois-je créer un objet par partenaires ? cela me semble un peu inutile, a part si la réponse a la question 2 est oui.. ou dois-je faire un bojet qui gère l'entier des partenaires ?
    2) stockez-vous les objets dans la sessions ?

    Désolé pour ces question simplet, mais j'aimerais bien savoir la meilleures facon de codé..

    Merci d'avance

    EDIT : je précise un peu ce que je voudrais faire avec les partenaires.. J'aimerais pouvoir lister tout les partenaires, en créer, modifié, ..

  2. #2
    Membre actif Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Points : 229
    Points
    229
    Par défaut
    Salut,

    Un objet est une instance de classe.

    La classe (syntaxe pas forcément exacte, je suis plutôt Java et je code rarement en PHP5) :
    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
     
    public class Partenaire {
     
    //propriétés
    private $nom;
    private $adresse;
    private $blacklisted;
     
    public __construct($nom, $adresse) { 
        this.$nom = $nom;
        this.$adresse = $adresse;
    }
     
    public blacklister($flag) {
         $blacklisted = $flag;
    }
     
    }
    Ta classe décrit ce qu'est un partenaire et ce qu'il est possible de lui faire ou de lui faire faire.

    Pour créer un partenaire, tu dois instancier ta classe (instancier = créer un objet) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $partenaire1 = new Partenaire("pouete", "à côté");
    Tu pourras utiliser les fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $partenaire1=>blacklister(true);
    En effet, tu devras créer un objet Partenaire pour chacun de tes partenaires si tu veux tous les avoir dans ton code.

    Tu pourras les stocker où tu veux. Dans un array() ou dans ta session... Les objets rentrent sans problème dans les variables, $partenaire1 est une variable.

    J'espère être assez clair... Le mieux c'est de suivre des tutos pour que ça rentre bien dans la tête.

  3. #3
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Pour assurer la persistance de tes données il faut les sauvegarder quelque-part. (Ta session est détruite à chaque foie que tu éteins ton navigateur.) Le plus courant est de stocker tes objet dans une base MySql.

    Tu peux aussi utiliser des systèmes d'abstraction de base de données

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    j'ai fais beaucoup de prog en java, mais je sais pas pourquoi, le poo en php me semble pas du tout logique... C'est surtout parce que je ne sais pas ou mettre les objets créer ! je me mets a la prog poo en php pour etre plus propre, mais avant je codais déja en php..

    T'as bien été clair Goupo, merci Donc j'ai bien pensé juste.. Mais ca alourdi pas trop la session si on stock dans celle ci ? Certains objet, comme des articles, sont au nombre de 50'000...

    pour les systemes d'abstration de base de donnée, c'est genre pdo ?

    Mais par exemple, pour supprimer un partenaire, c'est plus propre de créer l'objet pour ensuite appeler la fonction delPartenaire($id), ou faire un function static genre ët de l'appeler par Partenaire::delPartenaire($id): (cette exemple s'applique uniquement si la réponse sur l'alourdissement de la SESSION est oui..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static function delPartenaire($id){
       $req = "delete from partenaires where id_part = ".$id.";";
       mysql_query($req);
    }
    Merci pour vos éclaircissement !

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Citation Envoyé par DeeVoiD Voir le message
    .

    T'as bien été clair Goupo, merci Donc j'ai bien pensé juste.. Mais ca alourdi pas trop la session si on stock dans celle ci ? Certains objet, comme des articles, sont au nombre de 50'000...
    Tu auras une classe article , mais ca ne veux pas forcément dire qu'il est nécessaire de faire 50k instanciation.
    D'une part car tu n'afficheras jamais 50k articles sur la même pages mais aussi car il est plus performant d'avoir une méthode getArticles() qui va te retourner un array de X articles.

    Ensuite tu peux par exemple avoir une methode getArticle($id) (au singulier cette fois) qui va peupler les attributs de ta classe qui concerne un article en particulier.

    Bref ca ne sert à rien de créer des instances pour chaque éléments de ta base. Elle est la pour stocker les informations , à toi d'aller les chercher au cas par cas

  6. #6
    Membre actif Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Points : 229
    Points
    229
    Par défaut
    Oui, il paraît que PDO fait ça, jamais utilisé.

    Le mieux est de se la faire un peu MVC en créant une classe qui soit réservée à la relation base de données.

    Par exemple, PartenairePDO serait une classe spécialisée dans le rapatriement des données des partenaires (bien sûr je n'ai pas implémenté les méthodes) :
    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
     
    class PartenairePDO {
     
         //Au cas où tu aies besoin d'afficher tous tes partenaires
         public ArrayList<Partenaires> getTousLesPartenaires() {...}
     
         //Pour trouver un partenaire en fonction de son nom
         public Partenaire getPartenaire (nomDuPartenaire) {}
     
         //Méthodes classiques 
         public void updatePartenaire(unPartenaire) {}
         public void deletePartenaire(unPartenaire) {}
         public void createPartenaire(unPartenaire) {}
     
         //Tu peux implémenter toutes les classes qui te semblent utiles
         //En imaginant que tu aies besoin de trouver tous les partenaires d'une ville...
         public ArrayList<Partenaires> getPartenaireParVille(ville) {}
    }
    Si tu as 1 million de partenaires, tu n'es pas obligé de les garder sous forme d'objet dans ton programme. La base de données est là pour ça!

    Tu stockes ton partenaire dans la base de données et quand tu en as besoin, tu demandes à ta classe PartenairePDO quite renvoie un ou plusieurs objet Partenaire correspondant à ce que tu as besoin.

    Et pareil pour tes articles, ArticlesPDO, etc.


Discussions similaires

  1. Réponses: 15
    Dernier message: 03/01/2015, 12h35
  2. Bloc PLSQL récupérant les ordres de création des objets
    Par D_light dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 30/10/2012, 11h56
  3. Principe de création des DefaultListModel
    Par totoche dans le forum Débuter
    Réponses: 2
    Dernier message: 12/05/2009, 15h47
  4. Réponses: 6
    Dernier message: 28/04/2008, 10h24
  5. USER APPS et création des objets -Oracle 9i
    Par bilalove dans le forum SQL
    Réponses: 0
    Dernier message: 26/07/2007, 02h57

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