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] PHP Objet, Ajax et webcontrols...


Sujet :

Langage PHP

  1. #1
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut [POO] PHP Objet, Ajax et webcontrols...
    Je me suis lancé, il y a quelques temps, dans un "petit" jeu en PHP.
    Je fais ça durant mon temps libre, quand j'ai l'envie, le courage, que la fatigue n'est pas au rendez-vous... Bref, on peut dire que ce n'est pas urgent du tout.

    Le petit jeu en question, pour résumer, est une sorte de clone de master of magic (si vous ne connaissez pas, il s'agit grosso modo de "civilization à la sauce heroes of might and magic").

    Le jeu est donc doté d'une carte du monde. Et la semaine dernière, je me suis dit : "et si je faisais une carte du monde en 3D isométrique ?".
    Projet un peu fou, mais au moins, ça me fera un petit challenge. Et puis dans le même temps, si les graphismes sont beaux, ça risque de faire un jeu plutôt sympa, ce qui n'est pas pour me déplaire.

    Si vous voulez voir ce que ça donne (j'ai bossé 4 heures dessus, peut-être, alors n'en espérez pas trop ), lancez Firefox et allez voir ICI (Le serveur n'est pas allumé la nuit).


    Bref, venons-en au fait.

    Professionnellement, je ne me sers pas énormément, en PHP, des classes ; pas du tout d'AJAX. En revanche, j'utilise pas mal de webcontrols programmés par mes soins.

    J'en viens, avec ce projet de jeu, à me dire que la technologie objet et AJAX seraient assez sympathiques, en fait.
    Le problème, grosso modo, est que je me pose la question, comment organiser tout ça proprement...

    L'idée que j'ai, actuellement, est qu'il pourrait être sympathique d'arriver à un niveau d'abstraction semblable à celui proposé par ASP.NET (J'ai bien dit semblable et pas identique).

    L'idée serait de pouvoir ajouter des contrôles à une page web et les manipuler des contrôles web d'une manière semblable à la philosophie .NET.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $monBouton = new Button(...);   // Création d'un bouton
    $monBouton->OnClick = .....;   // Ajout d'un événement OnClick
    $maPageWeb->Controls->Add($monBouton);   // Ajout du bouton dans une page web.
    // ....
    $maPageWeb->SendToClient();
    Bien entendu cet exemple n'est là que pour illustrer ce dont je parle.
    D'ailleurs cela peut poser quelques problèmes : l'événement OnClick du bouton ici, par exemple, serait très probablement une fonction en javascript, et mixer javascript et php... Ptet pas la meilleure idée.

    En fait la question que je me pose est, grosso modo, comment s'organiser pour profiter pleinement d'AJAX et des webcontrols tout en restant le plus simple d'utilisation possible ?

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je pense qu'xajax pourrait te convenir. Cela fait grosso modo ce que tu souhaites.
    Au passage, joli travail sur ta 3D isométrique

  3. #3
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Merci

    J'ai regardé un peu xajax, c'est assez sympathique pour ajax, effectivement. Mais, on a pas ici l'aspect "abstraction des webcontrols" que je cherche également.

    Par exemple, pour ma "carte en 3D iso", dans l'idéal, elle devrait pouvoir se manipuler aussi simplement que ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $maCarte = new Carte3DIso();
    foreach($Boxes as $key->$box){
      $maCarte->addBox($box->X,$box->Y,....);
      $maCarte->OnBoxEnter = /*une fonction javascript (utilisant potentiellement ajax)*/;
      $maCarte->OnBoxLeave = /*idem*/;
      $maCarte->OnBoxClick = /*idem*/;
      /*etc...*/
    }
    Le but de la manoeuvre est de ne pas manipuler directement le code (x)html, mais de manipuler une abstraction de l'objet à manipuler.
    En définitive, une fois le webcontrol "carte 3D iso" réalisé, ça ne m'intéresse plus trop de savoir que ce webcontrol est formé de tout un tas de balises DIV ou de balises IMG ou quoique ce soit d'autre.
    En revanche, c'est très intéressant de savoir quand le curseur entre ou quitte une boite (événements MouseEnter, MouseLeave), quand l'utilisateur a cliqué sur une boîte et sur quelle boîte (événement MouseClick), etc...
    C'est aussi très intéressant de pouvoir manipuler le contenu de la boîte, sans passer par sa définition en DIV, IMG ou autre.

    En fait, c'est une "simple" application client/serveur, la différence étant que l'IHM est fournie par le serveur, et c'est ça qui me trouble, je crois.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    salut
    peut etre que json peut t'aider (mais je connais pas assez pour etre affirmatif)

  5. #5
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    J'ai oublié de préciser quelque chose.
    Je ne cherche pas particulièrement une bibliothèque qui ferait tout ça (ou partiellement tout ça), je cherche juste une "direction", des idées, des modèles, pour m'aider à organiser tout ça proprement, efficacement.

    Bref, je ne cherche pas du "tout fait, tout cuit" , ça m'étonnerait que quelqu'un ait produit une bibliothèque qui gère des cartes 3D isométriques, par ailleurs.
    Je cherche juste à avoir une organisation, qui soit suffisamment souple et aisée d'utilisation pour supporter des développements conséquents.

    A la limite, si je pouvais me passer de choses comme xajax ou json, dans un premier temps, ça serait presque mieux. (sauf, évidemment, si ces technologies/librairies sont tellement merveilleuses que faire sans relèverait de l'hérésie ).

    J'avoue que le "petit jeu" en question a un but pédagogique également, c'est la raison pour laquelle j'aimerais autant que possible me passer d'outils "non-standards".

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    si je suis pas completement a coté de la plque json de permet de transcoder des objets php en javascript ce qui pourrait t'aider
    si j'ai bien compris ton probleme

  7. #7
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Oui, c'est juste.
    Mais c'est pas json tout seul qui me permettera de faire ce que je veux .

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je pense avoir finalement saisi ^^

    C'est effectivement le décalage client/serveur qui te perturbe.
    Avec une appli Java par exemple, exécutée de bout en bout sur le poste client, tu peux définir des évènements que l'appli et/ou le système va/vont recevoir/déclencher.
    Ici, c'est PHP qui compile l'appli et elle est exécutée sur le poste client (navigateur). Il y a donc un gros décalage : tu ne peux pas définir des évènements du style OnBoxEnter puisque ça n'a absolument aucun sens en PHP et en HTML. Il faut passer par Javascript (AJAX, tant qu'à faire).

    Dans le code que tu cites, je pense qu'il serait plus simple de créer au moins une classe supplémentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $maCarte = new Carte3DIso();
    foreach($boxes as $box){
      $maCase = new CaseDeLaCarte($box->$w, $box->$h, $box->$colors);
     
      $maCase->OnBoxEnter = /*une fonction javascript (utilisant potentiellement ajax)*/;
      $maCase->OnBoxLeave = /*idem*/;
      $maCase->OnBoxClick = /*idem*/;
      /*etc.*/
     
      $maCarte->addBox($maCase, $X, $Y, etc.); //$x et $y peuvent être incrémentées dans le foreach
    }
    Il faudrait concevoir chaque case comme un élément distinct et ajouter chacune d'elles peu à peu à la carte (une fois les évènements AJAX définis, pas avant).

    Concernant l'abstraction des webcontrols, il ne s'agit que de définir tes classes d'une manière qui te permette de tout gérer comme tu le souhaites... xajax ne permet que d'utiliser AJAX sans se prendre la tête : rien ne t'empêche (bien au contraire, dirais-je même) d'intégrer xajax dans des classes de ton cru et de lui faire faire ce que tu souhaites, le tout de manière plus ou moins transparente.

Discussions similaires

  1. [POO] PHP Objet / BDD
    Par Erwan M. dans le forum Langage
    Réponses: 5
    Dernier message: 07/03/2008, 16h13
  2. [POO] PHP objet : problème de sérialisation
    Par Eleison dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2007, 16h01
  3. [POO] PHP objet
    Par bart64 dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2006, 11h41
  4. [POO] Programation objet en php
    Par ldcarpathes dans le forum Langage
    Réponses: 5
    Dernier message: 24/01/2006, 00h46
  5. [POO] langage objet et php.
    Par FFF dans le forum Langage
    Réponses: 15
    Dernier message: 09/11/2005, 18h36

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