Développer des composants graphiques en PHP

Posté par  . Modéré par Nÿco.
Étiquettes :
1
5
juin
2007
PHP
Pxxo sert à créer des composants graphiques (ou widget) qui permettent de construire une page HTML comme une hiérarchie de composants plus simples.

Chaque composant est une micro-application Web pouvant être facilement imbriquée dans une application ou même dans un autre composant. Un composant graphique possédant une intelligence coté serveur (PHP) et une apparence (XHTML, CSS, JS) coté client. En outre, en proposant un squelette de construction, Pxxo permet d'assurer une homogénéité des traitements et du code source.

Pxxo est un projet OpenSource sous licence LGPL principalement utilisé à l'INIST/CNRS La dernière version 4.x apporte :
  • Un gros refactoring autour de 3 concepts de bases ;
  • Des méthodes plus simples et plus cohérentes ;
  • Un cadre plus strict pour chaque composants graphiques (paramètres, fichiers, répertoires...) ;
  • L'ajout de la notion de thème hiérarchique ;
  • Une meilleure gestion des ressources (js, CSS, images...) notamment avec leur regroupement par type ;
  • Diverses améliorations (cache, template, debug...).

Aller plus loin

  • # prado + xajax

    Posté par  . Évalué à 1.

    cette bibliothèque me fais penser à un mixte de prado et xajax
    • [^] # Re: prado + xajax

      Posté par  (site web personnel) . Évalué à 2.

      A propos de widgets AJAX, il y a cette bibliothèque que j'ai eu l'occasion d'utiliser récemment et qui est très impressionnante : Qooxdoo [http://qooxdoo.org/]
      Le nom est imprononçable, mais il y a vraiment beaucoup de widgets dispo et ça se programme un peu comme du GUI client lourd (des signaux, des layouts, du pack(), etc...)

      C'est du pur Javascript, donc on peut l'utiliser avec n'importe quel langage côté serveur. Leurs démos sont vraiment impressionnantes, par exemple le showcase (exemple avec tous les widgets dispos) [http://demo.qooxdoo.org/current/showcase/]

      Seul défaut : la documentation n'est pas abondante, il faut parfois regarder dans les (nombreux) exemples fournis comment ils ont fait.

      Je ne connais pas particulièrement bien l'écosystème des frameworks AJAX, mais je n'avais jamais entendu parler de celui-là jusqu'à peu, et à mon avis il gagnerait à être mieux connu.
    • [^] # Re: prado + xajax

      Posté par  (site web personnel) . Évalué à 0.

      En faite Pxxo n'est pas, à priori, orienté Ajax.
      Cependant il propose des mécanismes pour "ajaxiser" les widgets tout en les gardant accessible à ceux qui n'ont pas javascript d'activé sur leur navigateurs.

      Exemple concret sur le jeu du démineur qui fonctionne avec ou SANS javascript :
      http://demo.pxxo.net/widgets/demos/tester/Pxxo_Widgets_Game_(...)
  • # à quand une réelle séparation du contenu et de la forme ?

    Posté par  . Évalué à 0.

    le projet m'intéressait : j'étais en train de réfléchir au même type de principe, j'étais très heureux de ne pas avoir à le créer jusqu'au moment où j'ai vu le source d'un template "type" : horreur absolue : du php mêlé au code html...

    comment expliquer au graphiste (qui n'en a rien à secouer de php ou de tout autre langage de programmation) quoi mettre et où ? faut se taper sa formation ?

    à quand un release qui tienne compte du facteur "j'veux pas apprendre le php" très important lorsqu'on bosse avec un graphiste ?

    Le projet est super... et novateur dans le monde du php! mais je vois que les vieilles habitudes ont la vie dure...
    • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

      Posté par  . Évalué à 1.

      Il y a quelques temps, on pouvait choisir son moteur de template parmi 3 moteurs.
      Mais cette possibilté a été légérement masquée pour simplifier la compréhention, l'usage et la maintenance.

      Maintenant l'architecture du code permet de changer de moteur sans aucun problème. Il suffit juste de créer une interface adéquate.
    • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

      Posté par  (site web personnel) . Évalué à 4.

      En regardant de plus près c'est en effet le PHP qui est utilisé comme langage de template.

      Pour moi c'est un avantage d'utiliser PHP plutôt qu'un langage de template ésothrique. On a (dev et graphistes) pas à apprendre un nouveau langage.
      En smarty on ferait {$mavariable}
      En php on ferait <?php echo $mavariable; ?>
      On retrouve une équivalence.

      Donc utiliser PHP comme langage de template n'est pas une mauvaise idée je trouve ( tant qu'on reste dans la philosophie séparation code/html bien entendu ).
      • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

        Posté par  . Évalué à 2.

        pour être plus concis, <?=$mavariable?> ce qui est plus proche de la syntaxe d'un moteur de template.

        Pour en revenir à la problématique des moteurs de template, je citerais rasmus :

        "Rasmus Lerdorf : PHP is a templating engine by itself. Adding another templating engine on top of it just doesn't make sense. The only situation where it makes sense, is when you don't trust the template to contain nice behaving code."
    • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

      Posté par  (site web personnel) . Évalué à 4.

      Les "vieilles habitudes" comme tu dis, c'est justement de vouloir absolument un langage différent de php pour la mise en page.

      - D'abord, php est le langage de mise en page le plus rapide. Toute surcouche pour faire joli ralenti énormement le temps de traitement d'une page. D'autant que PHP possède tout les fonctions utiles par défaut (affichage, boucle, etc.) alors que les autres langages de templates doivent tout réinventer, et tout recoder... en php. Vive l'efficacité.

      - Ensuite, qu'est-ce que ça change pour le graphiste d'apprendre "{toto}" ou "<?php echo $toto; ?> ou encore "<?= $toto?>" ? Dans tous cas les il devra apprendre un truc ! De toutes façons, le dev doit faire des templates par défaut au moment de son développement, le graphiste n'a qu'à remplacer les bouts de HTML et le CSS, et ne pas s'occuper du PHP et puis c'est tout.

      - Enfin, ce qui est le plus important dans "la sépartion du contenu et de la forme", c'est de séparer la *logique* d'affichage du reste. Le langage utilisé n'a rien à voir là dedans ! Là, la séparation est claire, le template ne fait que des echo et des boucles, je ne vois donc absolument pas pourquoi tu dis que la séparation n'est pas "réelle".
      • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

        Posté par  . Évalué à 1.

        je suis d'accord avec les 2 commentaires précedent.

        Je rajouterais qu'en tant que dev, je n'ai JAMAIS croisé un graphiste capable d'intégrer une page html dans un site via un système de template (ou non).

        le plus important pour moi est aussi la séparation vue / controlleur
      • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

        Posté par  . Évalué à 0.

        Imaginons qu'un projet soit lancé, qu'un développeur utilises Pxxo pour un composant du projet et qu'un autre veuille utiliser python. On se retrouve obligé de devoir traduire les "templates"... un peu idiot... si on avait utilisé quelque chose comme "{toto}" ou même "{barre de navigation}" on aurai pu réutiliser le template sans traduction/nettoyage.

        Si vous regardez en détail les sources présentés sur le site, il n'y a pas que de simples "echo" mais des bouts de codes entiers, comme des appels à la bdd, des boucles etc...

        De plus, il est clair que pour un graphiste il n'est pas plus compliqué
        pour le graphiste d'apprendre "{toto}" ou "<?php echo $toto; ?> ou encore "<?= $toto?>"
        mais il est clair qu'il est moins compliqué d'apprendre "tu mets un tag type {toto} là où tu veux que le contenu appelé "toto" dans la feuille de route soit affiché" que d'apprendre à mettre 5 lignes de codes pour ressortir des données de la bdd et les afficher selon une condition.

        et non, si on voit du php dans un template, le code n'est pas séparé de la forme. si on veut changer le template, on aura à re-écrire les bouts de codes qui sont dedans. Si on veut permettre d'avoir plusieurs templates, on sera obligé de reproduire tous les bouts de code. Si on veut changer ces bouts de codes (évolution du projet/maintenance/tests) il faut le faire sur tous les templates : donc le template fait partie intégrante du code, donc le code n'est pas séparé de la mise en forme.
        • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

          Posté par  (site web personnel) . Évalué à 1.

          Si vous regardez en détail les sources présentés sur le site, il n'y a pas que de simples "echo" mais des bouts de codes entiers, comme des appels à la bdd, des boucles etc...

          Où as tu trouvé des appels directes à la bdd dans les templates ? J'utilise Pxxo depuis quelques temps déjà et je n'ai jamais eu besoin de faire des appels à la base de donnée dans le template lui même.
          Par contre les boucles, en effet, c'est nécessaire. Un exemple très concret où l'on ne peut pas se passer de boucles est l'affichage d'une liste d'éléments. D'ailleurs, tous les moteurs de templates que je connaisse permettent de faire des boucles, elles sont indispensables.
          Par ailleurs, que mets tu dans le "etc..." ?

          Cependant, je suis d'accord que d'utiliser PHP comme langage de template impose de se donner des règles entre développeurs et graphistes car on peut faire tout et n'importe quoi, rien n'empêche de coller un <?php die(); ?> dans le template :-)
          • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

            Posté par  . Évalué à 1.

            je sais plus très bien où j'ai téléchargé des exemples... dans le "etc" j'ai vu des calculs divers et autres traitements...

            Cependant, je suis d'accord que d'utiliser PHP comme langage de template impose de se donner des règles entre développeurs et graphistes car on peut faire tout et n'importe quoi, rien n'empêche de coller un <?php die(); ?> dans le template :-)
            'sont facétieux ces graphistes :)

            mais quitte à adopter des règles, autant qu'elles soient les plus simples possibles et les plus portables possibles... si quelqu'un veut réutiliser ton template dans un autre langage ça va pas être évident non plus... non ?
            • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

              Posté par  (site web personnel) . Évalué à 2.

              mais quitte à adopter des règles, autant qu'elles soient les plus simples possibles et les plus portables possibles... si quelqu'un veut réutiliser ton template dans un autre langage ça va pas être évident non plus... non ?

              En effet, les templates en PHP ne seront pas réutilisables dans d'autres langages. Pour moi, ce genre de choix dépend du contexte de ton projet, en effet si ton projet impose d'utilisation mixte de plusieurs langages de programmation utilisant tous les même templates, le PHP comme langage de template n'est pas un bon choix.
              Vu tes commentaire tu as certainement déjà rencontré ce besoin dans tes expériences professionnelles, ce n'est pas mon cas.

              D'un autre coté, si on souhaite utiliser un langage de template universel, il faudrait déjà qu'il existe. A ma connaissance aucune norme ou standard n'existe en la matière. Au contraire, il existe des palanqués de systèmes qui au final font la même chose. A mon avis, on ne peut donc pas plus cracher sur des templates en PHP, que sur un autre système.
              • [^] # Re: à quand une réelle séparation du contenu et de la forme ?

                Posté par  . Évalué à 1.

                Vu tes commentaire tu as certainement déjà rencontré ce besoin dans tes expériences professionnelles

                bien vu !

                D'un autre coté, si on souhaite utiliser un langage de template universel, il faudrait déjà qu'il existe. A ma connaissance aucune norme ou standard n'existe en la matière.


                Certes, c'est certain, cependant on remarque quant même une certaine propension à utiliser une notation entre accolades {}, certes c'est loin n'être une norme mais plus un usage récurrent. en utilisant ce genre de notation on a plus de chance de permettre le portage du template... et mieux de l'adapter simplement.

                De plus, les systèmes de template, c'est bien joli, mais on a souvent pas réellement besoin d'un système hyper élaboré...

                enfin, je ne crache pas sur les templates en PHP, je code moi même presqu'excusivement en php, et je remercie les moinsseurs de bien vouloir relire... je dis juste que j'ai du mal à concevoir qu'on mette du code *quel qu'il soit* dans un template

                mais à priori ça n'est pas un pb (voir plus haut dans la page)

                bref cette discussion m'a saoulé tellement bcp de gens sont obtus,sectaires et réac...

                pxxo est superbe, j'adore php, mais du code dans un template... c franchement pas le top

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.