Publicité
+ Répondre à la discussion
Page 1 sur 9 12345 ... DernièreDernière
Affichage des résultats 1 à 20 sur 161
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : décembre 2004
    Messages : 662
    Points : 319
    Points
    319

    Par défaut [POO] Avantages de la programmation orientée objet en PHP 5

    Pour php 5 je suis pas super avancé donc si je peux avoir un lien vers un exemple de clase statique ca m'aiderait

    Sinon j'ai pas vu dans la doc les jours férié....


    [Edit] Cette discussion a été déclenchée par : http://www.developpez.net/forums/sho...d.php?t=368192

  2. #2
    Rédacteur
    Avatar de Yogui
    Homme Profil pro Guillaume Rossolini
    Directeur technique
    Inscrit en
    février 2004
    Messages
    13 719
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Rossolini
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : février 2004
    Messages : 13 719
    Points : 29 234
    Points
    29 234

    Par défaut

    Définition
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    abstract class Calendar
    {
       public static function frenchDate($date)
       {
             $temp = explode("-",$date);
             $res = $temp[2]."/".$temp[1]."/".$temp[0];
             return($res);
       }
    }
    Appel
    Code :
    echo Calendar::frenchDate($date);

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : décembre 2004
    Messages : 662
    Points : 319
    Points
    319

    Par défaut

    Oki merci j'ai compris cette utilisation.

    Mais quel avantage de le mettre dans une classe?

  4. #4
    Membre Expert
    Avatar de viviboss
    Profil pro
    Inscrit en
    août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : août 2006
    Messages : 943
    Points : 1 056
    Points
    1 056

    Par défaut

    Plus facile à standardiser, à transporter d'une appli à l'autre, plus facile de s'en rappeler (un appel à une classe, un fichier...)

    Ha oui, ne pas oublier : il est plus facile à lire une classe, quand il n'y en a qu'une par fichier PHP (Pour l'homme, bien sur).

    La classe fait tout de suite "pro", et organise mieux la présentation (facilité de lecture, de modification, de maintenance...)

    Bref, que des avantages !!!!

    Et puis, l'avantage le plus important : laisser tomber le procédurale, pour passer à l'Objet qui représente l'avenir de PHP....
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  5. #5
    Rédacteur
    Avatar de Yogui
    Homme Profil pro Guillaume Rossolini
    Directeur technique
    Inscrit en
    février 2004
    Messages
    13 719
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Rossolini
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : février 2004
    Messages : 13 719
    Points : 29 234
    Points
    29 234

    Par défaut

    Un autre avantage est de permettre de regrouper les fonctions dans des sortes de namespaces. Cela te permet de féfinir 2 classes différentes avec des méthodes aux noms en commun mais au comportement différent. C'est le principe du design pattern Factory, par exemple :

    Code :
    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
    // class PDF
    // class SWF
    // class PPT
     
    abstract class DocumentFactory
    {
       public static function create($fileName)
       {
         // extraire $extension depuis $fileName
     
          switch($extension)
          {
              case 'pdf':
                 return new PDF($fileName);
              break;
     
              case 'swf':
                  return new SWF($fileName);
              break;
     
              case 'ppt':
                  return new PPT($fileName);
              break;
       }
    }
    Imagine que les classes 3 PDF, SWF et PPT partagent les mêmes noms de méthodes, alors tu obtiens une classe DocumentFactory permettant de générer soit un PDF soit un SWF soit un PPT avec le même code applicatif, simplement en changeant le nom du fichier :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $document = DocumentFactory::create('test.pdf');
    //$document = DocumentFactory::create('test.swf');
    //$document = DocumentFactory::create('test.ppt');
     
    // Appels indifféremment de la class réelle de $document :
    $document->page(...);
    $document->titre(...);
     
    $document->page(...);
    $document->text(...);
    $document->text(...);
     
    $document->page(...);
    $document->text(...);
     
    $document->save(...);

  6. #6
    Membre Expert
    Avatar de viviboss
    Profil pro
    Inscrit en
    août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : août 2006
    Messages : 943
    Points : 1 056
    Points
    1 056

    Par défaut

    Héhé c'est marrant, je suis en plein dedant

    Sauf que ma classe à moi, elle s'appelle FactoryDocument !!!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  7. #7
    Rédacteur
    Avatar de Yogui
    Homme Profil pro Guillaume Rossolini
    Directeur technique
    Inscrit en
    février 2004
    Messages
    13 719
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume Rossolini
    Localisation : France

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : février 2004
    Messages : 13 719
    Points : 29 234
    Points
    29 234

    Par défaut

    C'est un document d'usine (FactoryDocument) ou bien une usine de documents (DocumentFactory) ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : décembre 2004
    Messages : 662
    Points : 319
    Points
    319

    Par défaut

    Merci des explications.

    C'est vrai que dans un programme java j'arrive a voir l'interet des objets, autant en php j'ai du mal mais bon

  9. #9
    Membre Expert
    Avatar de viviboss
    Profil pro
    Inscrit en
    août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : août 2006
    Messages : 943
    Points : 1 056
    Points
    1 056

    Par défaut

    ..Je vois pas ou tu as du mal :

    Si tu réalise une application en PHP (même un site Internet...) qui fait plusieurs milliers de lignes de code, il est plus simple de maintenir de l'Objet.

    Par exemple, en ce moment je suis sur une appli de plusieurs centaines de fichiers PHP (1080 exactement...), en procédurale je ne m'y retrouverai jamais. En plus, au fur et à mesure des évolutions, en procédurale tu dois effacer, réécrire, revenir en arrière, puis en avant pour voir les répercutions, etc....

    Depuis le début de mon projet, grace à l'objet, je n'ai effacé AUCUNE ligne de ode, je n'ai fait que faire évoluer mon code en éditant mes classes, sans quasiment toucher au code d'appel.

    L'objet simplifie le développement, si tu vois l'intéret en JAVA, je vois pas pourquoi tu ne le vois pas en PHP ?

    L'objet n'est pas réservé qu'au C++ ou au JAVA, il faut voir un intéret général plutot que particulier.

    Python, Ruby, JavaScript, PHP sont tous des langages Objet.

    De plus, avec l'Objet tu peux REELEMENT capitaliser ton code (c'est ce que tu veux faire avec tes fonctions, là....), alors que les fonctions procédurales devront toujours s'adapter aux particularités d'un projet.

    EDIT : sans passer pour un troll, j'oubliais de citer les langages de classe "inférieurs", et de m...... : .NET, C#, ASP etc...
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : décembre 2004
    Messages : 662
    Points : 319
    Points
    319

    Par défaut

    En fait comme j'ai jamais vu d'exemple de code concret objet en php j'arrive pas a voir ce que ca donne.

    Maintenant si je vois un projet et qu'on m'explique le raisonnement peut être que je verrais les choses autrement ;-)

  11. #11
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2006
    Messages : 147
    Points : 78
    Points
    78

    Par défaut

    je suis moi même en plein dans le poo en php et je dois avouer que j'ai du mal aussi à réfléchir son site en terme d'objet.
    Quel genre de classe trouve t'on souvent dans un site ? Ca serait bien des exemples de code comme le dit zulot.


    Citation Envoyé par viviboss
    Depuis le début de mon projet, grace à l'objet, je n'ai effacé AUCUNE ligne de ode, je n'ai fait que faire évoluer mon code en éditant mes classes, sans quasiment toucher au code d'appel.
    Est-ce que tu fais une séparation du code html avec le php quand tu programmes en POO ? Sinon est-ce génant pour la maintenance sachant qu'il y a également une feuille de style css externe.

  12. #12
    Membre confirmé

    Inscrit en
    mai 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 200
    Points : 279
    Points
    279

    Par défaut

    Par exemple j'ai créer une classe SQLManager (dispo dans la section Contribuez) qui permet de générer les requêtes , les exécuter et renvoi les résultats sous forme de tableau. Elle détecte aussi les fonctions SQL pour éviter de mettre des quotes aux valeurs, sinon elle les places seule. Pour des requêtes complexes (INNER JOIN et tout le tra la la) elle ne peut pas mais tu peut créer la requete toi même et l'executer quand même, je peut inséré, extraire et mettre à jour avec. Sans les classes à chaque requête il aurait fallu que je mette tout le code pour faire la requete, la lancée , parcourir les résultat pour les mettre dans un tableau final, au final je gagne beaucoup de temps et simplifie le code final.

    En gros image que tu dois faire un grooos jeu Lego mais c'est toi qui construit aussi les briques et elles sont pas toutes rectangulaires

  13. #13
    Expert Confirmé Sénior
    Avatar de berceker united
    Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    3 142
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : février 2005
    Messages : 3 142
    Points : 4 359
    Points
    4 359

    Par défaut

    sincèrement, vous aurez beau expliquer, une personne ne va pas forcement comprendre. C'est pas quelque chose de facile à comprendre d'un coup la notion objet surtout après plusieurs années de procédurale. Il faut que la personne code un peut en objet pour commencer à comprendre le principe. Malgré les exemples que vous faites ça n'aide pas forcement. il faut mettre le nez dedans pour avoir la révélation ou faire totalement abstraction à la programmation et faire une comparaison avec ce qui nous entoure dans notre vie car la notion d'objet est partie de là.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : décembre 2004
    Messages : 662
    Points : 319
    Points
    319

    Par défaut

    Oui effectivement d'ou la demande.

    QQn connait il un projet open source pas trop lourd et bien codé en objet php pour voir ce qu'il font?

  15. #15
    Expert Confirmé
    Inscrit en
    janvier 2005
    Messages
    2 290
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 2 290
    Points : 2 840
    Points
    2 840

    Par défaut

    Pas tres lourd ca dépend ce que t'entends par là
    Mais artichow me semble un exemple cohérent! Il y a un certain nombre de classes, de l'héritage, etc.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : décembre 2004
    Messages : 662
    Points : 319
    Points
    319

    Par défaut

    Mouais je pensais plus a un ptit truc basic pas a une librairie.
    Plus un module a rajouter a un site.....

  17. #17
    Membre du Club
    Inscrit en
    décembre 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : décembre 2002
    Messages : 53
    Points : 46
    Points
    46

    Par défaut

    Ben moi par exemple, pour me mettre dans le bain de la POO, j'ai programmé l'année dernière une classe pour gérer pratiquement toutes mes pages web.
    Actuellement tout ce que je fais qd j'ai un nouveau site à développer, c'est juste changer le design. Ce qui fait que je gagne énormément de tps.

    Je pense actuellement à mieux structurer la classe parce qu'il faut le reconnaître, lorsqu'on est débutant on a tendance à faire des classes fourre tout mais l'essentiel pour moi était d'oser franchir le gab. C'est fait et je le regrette pas du tout...

  18. #18
    Membre habitué
    Inscrit en
    octobre 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 54
    Points : 139
    Points
    139

    Par défaut

    Citation Envoyé par Sowa
    Je pense actuellement à mieux structurer la classe parce qu'il faut le reconnaître, lorsqu'on est débutant on a tendance à faire des classes fourre tout
    Pour ne pas en arriver là une démarche UML peut s'avérer intéressante, voir indispensable selon la nature du projet. Certes, quand on débute cela peut paraître abstrait et difficilement abordable mais les efforts qu'on consent sont par la suite largement récompensés par un gain de qualité et de productivité.

    L'objet exige grande rigueur dans l'étape de modélisation et ce n'est pas plus mal. Une application web "objet" nécessite d'étre intégralement conçue avant d'être écrite, c'est encore plus vrai que dans le cas d'un langage procédural.

    Pour en revenir plus spécifiquement au php5, c'est un langage que j'aborde seulement et je me pose justement de nombreuses questions sur son caractère objet. Quelques-unes en vrac :
    - Peut-on parfaitement dissocier le php (logique) du html (vue) ?
    - Peut-on créer simplement des contrôles personnalisés réutilisables à souhait, un système de menu par exemple ?
    - Quels outils utilser pour faire du php "objet" ?
    - Y a t'il des bibliothèques de classes disponibles et prêtes à l'emploi qui évitent d'avoir à réinventer la roue ?

  19. #19
    Invité régulier
    Inscrit en
    mai 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : mai 2003
    Messages : 10
    Points : 6
    Points
    6

    Par défaut

    Citation Envoyé par Kalishah
    Pour ne pas en arriver là une démarche UML peut s'avérer intéressante, voir indispensable selon la nature du projet. Certes, quand on débute cela peut paraître abstrait et difficilement abordable mais les efforts qu'on consent sont par la suite largement récompensés par un gain de qualité et de productivité.

    L'objet exige grande rigueur dans l'étape de modélisation et ce n'est pas plus mal. Une application web "objet" nécessite d'étre intégralement conçue avant d'être écrite, c'est encore plus vrai que dans le cas d'un langage procédural.

    Pour en revenir plus spécifiquement au php5, c'est un langage que j'aborde seulement et je me pose justement de nombreuses questions sur son caractère objet. Quelques-unes en vrac :
    - Peut-on parfaitement dissocier le php (logique) du html (vue) ?
    - Peut-on créer simplement des contrôles personnalisés réutilisables à souhait, un système de menu par exemple ?
    - Quels outils utilser pour faire du php "objet" ?
    - Y a t'il des bibliothèques de classes disponibles et prêtes à l'emploi qui évitent d'avoir à réinventer la roue ?
    Un papier et un crayon ça marche aussi vachement bien quand on débute, je suis passé par là et j'ai toujours pas lacher mon brouillon et mon crayon gris... Je suerais tenter de modérais un peu le "intégralement conçue", car il suffit à mon sens de savoir ou l'on va et d'avoir une bonne idée de ce que l'on souhaite obtenir.

    Pour moi une application qui est intégralement conçue avant la réalisation technique se ferme aux modifications auxquels l'on pense inévitablement pendant le dévellopement ou que l'on pourrait te suggèrer (cf : méthodes agiles de dévellopement).

    En ce qui concerne tes questions, dans l'ordre je dirais :

    - il le FAUT, donc c'est oui.
    - je pense que oui, même si je n'ai jamais essayé.
    - un éditeur de code, du papier, un crayon et le fichier de référence :p c'est ce que j'utilise (et une tasse de café aussi !)
    - je pense que pear correspond à ce que tu recherche : http://pear.php.net/

  20. #20
    Membre habitué
    Inscrit en
    juillet 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 196
    Points : 118
    Points
    118

    Par défaut Poo po po

    Citation Envoyé par zulot
    Mouais je pensais plus a un ptit truc basic pas a une librairie.
    Plus un module a rajouter a un site.....

    Slt,

    http://www.developpez.net/forums/sho...4&postcount=40

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •