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 :

PHP orienté objet


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut PHP/DOM - Contenu HTML dynamique
    Bonjour à tous !!!

    Je suis débutant et j'ai lu les tutos suivants :

    Introduction à la Programmation Orientée Objet.

    La programmation orientée objet en PHP.

    Et j'ai quelques questions...

    D'abord, à quoi sert la durée de vie des objets ainsi que les fonctions magiques ?

    Ensuite, je voudrais créer un site dont les pages se structurent grâce à des objets. Pensez-vous que ce soit réalisable ?

    Merci d'avance pour votre aide !!!

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Pour la durée de vie des objets, c'est plutôt un souci en php. En fait, une fois ton script exécuté, tous tes objets sont automatiquement détruits (et donc ne sont plus disponibles pour l'action suivante par exemple). Dans les autres langages objets, on peut conserver un objet créé tant que l'application s'exécute.

    Un exemple qui va peut-être te paraître plus clair (du moins j'espère) : la gestion de panier. Si tu faisais une appli en java, c++, etc... rien ne t'empêcherai de créer un objet panier pour un utilisateur, qui contienne tous ses articles. Ce panier aurait des méthodes ajouter article, supprimer article, valider, etc... Tu pourrais créer l'objet panier lorsque l'utilisateur s'identifie, puis l'utiliser jusqu'à la déconnexion pour ajouter des articles, commander, etc... En php, ce n'est pas possible. après chaque requête au serveur, tes objets sont supprimés et doivent donc être recréés (à partir d'informations que tu peux récupérer dans des variables GET, POST, SESSION, dans ta base de données, etc...)...


    Pour les fonctions magiques, ce sont simplement des méthodes particulières, qui ont un nom particulier (ex : __sleep() ) et qui si elles existent sont automatiquement exécutées lors de certains événements. Par exemple, __sleep() sera exécutée lorsque tu utilises la fonction serialize sur un objet. Elles permettent donc de définir le comportement de ton objet lorsque certaines actions sont faites dessus.


    Enfin, pour la structuration des pages grâce à des objets, oui c'est possible (en fait, tu peux écrire un site complet en php en n'utilisant 'presque' que des objets). Mais pour plus de précisions, il faudrait que tu définisse ce que tu veux dire par "un site dont les pages se structurent grâce à des objets".

  3. #3
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    En effet, les objets sont détruits à chaques executions en PHP mais je tiens à nuancer, ce n'est pas un mal du tout (ca evite bien des deboires comme de possibles fuites de mémoires).

    PHP implémente un systeme de sérialisation d'un objet (transformation de l'objet en description textuel) et de désérialisation (transformation description textuel en objet ). Celui ci permet de le transmettre aisément d'un appel de script à un autre (il suffit de stocker la description textuel dans un fichier ou une base de donnée).

    POINT IMPORTANT POUR L OBJET :
    La programmation objet, c'est bien mais ce n'est pas l'ultime méthode de programmation.
    Si ton application est mal pensé au départ en objet, tu vas au devant de bien des déboires (bien pire que si tu utilisais un design a base de fonctions).
    Au debut, tu as toutes les chances de tomber dans les pieges de l'objet et de te rendre compte au fur et à mesure de l'evolution de ton application qu'elle devient inutilisable et non evolutive.

    Je ne te conseille pas de commencer directement une application en objet si tu ne connais rien dessus.
    Regarde des systèmes tel que joomla ou Xoops, ils te fourniront un canevas pour commencer à penser en objet. Les systemes de modules de ces CMS sont très directif, tu evites une grosse partie des erreurs de conceptions.
    Tu peux aussi regarder les frameworks mais il faut la faire davantage attention car tu risques de vite sortir des sentiers battus et de te perdre.

    Apres, l'objet c'est surtout une méthode de penser et ça depasse completement la notion de language.
    La littérature généraliste explique très bien les mécanismes auquels il faut impérativement penser quand on imagine une application développé en orienté objet.

  4. #4
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut
    Citation Envoyé par Phelim Voir le message
    Apres, l'objet c'est surtout une méthode de penser [...]
    Ouep, ça j'ai bien saisi. Justement j'aimerais bien comprendre et accéder à cette façon de penser.


    Citation Envoyé par Eusebe Voir le message
    [...] il faudrait que tu définisse ce que tu veux dire par "un site dont les pages se structurent grâce à des objets".
    En fait, je voulais savoir si ça tenait la route la chose suivante :

    classe : HTML --> crée les balises classe fille de HTML : HEAD --> crée les balises et le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <head>
    toutes les meta qu il faut
    </head>
    classe fille de HTML : BODY --> crée les balises et le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <body>
    le contenu de la page
    </body>
    Est-ce que c'est réalisable ou est-ce que je me fourvoie dans la méthode d'utiliser le langage objet ?

  5. #5
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    Sur l'idée, c'est bon mais coté realisation, je ne pense pas.
    J'ai deja pensé a cette solution mais elle se revele un enfer à maintenir et à evoluer.
    Cette solution est trop lourde en objet. Ca va vite devenir un enfer.
    Il est dangereux de substituer un langage par de l'objet (tu cherches à substituer le xhtml par une architecture objet).


    Certains frameworks se basent sur la creation de composants reutilisables. C'est quelque peu different.

    Penser objet, c'est surtout eviter de penser reutilisation extreme mais de penser à ton cadre fonctionnel et au but de ton application.
    Ce n'est pas parce que 2 choses se ressemblent qu'il est judicieux de les lier ensemble.

    classe Avion découlant d'une classe transport
    classe Voiture découlant d'une classe transport
    Ce n'est pas judicieux dans beaucoup de cas.

    Neanmoins
    La meilleure facon d'apprendre, c'est de faire des erreurs.
    Essaie donc de coder un petit prototype de ce systeme. Je pense que tu verras rapidement les limites apparaitre

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Par défaut
    A vrai dire moi je developpe un site de jeu en ligne qui ne sera codé que en PHP/Javascript et utilisant le concept AJAX, et mon site utilise des fenêtres volante style windows, donc on peut faire de la prog objet pour un site, j'utilise neanmoins quelques librairies JS pour aider : jquery( inclus prototype ) + interface( pour les animations ) qui changent complètement la manière de programmer en javascript :o. Et pour créer de l'html en PHP je te conseil d'utiliser la classe DOMDocument native à PHP et non des variables avec chaines de caractere car c'est pas tres souple a force . De + DOMDocument est quasi indispensable pour faire du bon AJAX qui recois des réponses sous forme XML ( a mon gout ).

    P.S. : Une fois lancé avec les libraries la et PHP derriere, je n'ecris plus aucun code HTML, il est généré ( pour te donner une idée ). Même le CSS tu le fais en javascript et peut l'animer très facilement.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/02/2008, 09h24
  2. [POO] PHP Orienté Objet
    Par sliderman dans le forum Langage
    Réponses: 6
    Dernier message: 03/07/2007, 13h45
  3. [POO] Utilisation de PHP Orienté Objet
    Par Gibou dans le forum Langage
    Réponses: 7
    Dernier message: 26/11/2006, 02h30
  4. [Debat] Php Orienté Objet et les bibliotheques
    Par kagura dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 21/11/2006, 17h55
  5. [POO] Cours sur le PHP orienté objet
    Par gforce dans le forum Langage
    Réponses: 12
    Dernier message: 06/11/2006, 09h20

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