Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/06/2007, 16h28   #1
zulot
Membre éclairé
 
Inscription : décembre 2004
Messages : 662
Détails du profil
Informations personnelles :
Âge : 30
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
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 16h56   #2
Yogui
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 722
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 722
Points : 28 861
Points : 28 861
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);
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/06/2007, 17h12   #3
zulot
Membre éclairé
 
Inscription : décembre 2004
Messages : 662
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 662
Points : 319
Points : 319
Oki merci j'ai compris cette utilisation.

Mais quel avantage de le mettre dans une classe?
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 17h31   #4
viviboss
Membre Expert
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 1 056
Points : 1 056
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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 17h59   #5
Yogui
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 722
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 722
Points : 28 861
Points : 28 861
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(...);
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/06/2007, 18h06   #6
viviboss
Membre Expert
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 1 056
Points : 1 056
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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/06/2007, 19h50   #7
Yogui
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 722
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 722
Points : 28 861
Points : 28 861
C'est un document d'usine (FactoryDocument) ou bien une usine de documents (DocumentFactory) ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 29/06/2007, 10h16   #8
zulot
Membre éclairé
 
Inscription : décembre 2004
Messages : 662
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 662
Points : 319
Points : 319
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
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 10h30   #9
viviboss
Membre Expert
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 1 056
Points : 1 056
..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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/06/2007, 11h59   #10
zulot
Membre éclairé
 
Inscription : décembre 2004
Messages : 662
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 662
Points : 319
Points : 319
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 ;-)
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2007, 03h54   #11
Henry9
Membre régulier
 
Étudiant
Inscription : juillet 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2006
Messages : 147
Points : 78
Points : 78
Envoyer un message via MSN à Henry9 Envoyer un message via Yahoo à Henry9
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.
Henry9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2007, 14h19   #12
meliandah
Membre confirmé
 
Inscription : mai 2006
Messages : 196
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 196
Points : 278
Points : 278
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
meliandah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 10h01   #13
berceker united
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 3 030
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 030
Points : 3 991
Points : 3 991
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 !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/07/2007, 10h17   #14
zulot
Membre éclairé
 
Inscription : décembre 2004
Messages : 662
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 662
Points : 319
Points : 319
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?
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 10h19   #15
koopajah
Expert Confirmé
 
Inscription : janvier 2005
Messages : 2 287
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 287
Points : 2 832
Points : 2 832
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.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 10h31   #16
zulot
Membre éclairé
 
Inscription : décembre 2004
Messages : 662
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 662
Points : 319
Points : 319
Mouais je pensais plus a un ptit truc basic pas a une librairie.
Plus un module a rajouter a un site.....
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 14h11   #17
Sowa
Membre du Club
 
Inscription : décembre 2002
Messages : 53
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 53
Points : 46
Points : 46
Envoyer un message via MSN à Sowa Envoyer un message via Yahoo à Sowa
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...
Sowa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 15h48   #18
Kalishah
Membre habitué
 
Inscription : octobre 2006
Messages : 50
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 50
Points : 112
Points : 112
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 ?
Kalishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 16h10   #19
XhEYtHeR
Invité régulier
 
Inscription : mai 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 10
Points : 6
Points : 6
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/
XhEYtHeR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 14h14   #20
LDDL
Membre habitué
 
Inscription : 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
LDDL est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h11.


 
 
 
 
Partenaires

Hébergement Web