CATAPULT FRAMEWORK, VERSION 0.1 : "ORIGIN"

webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 11 avril 2008 à 12:22
heliburn Messages postés 14 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 10 décembre 2009 - 10 déc. 2009 à 16:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46336-catapult-framework-version-0-1-origin

heliburn Messages postés 14 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 16:52
Joli travail. J'ai bien regardé le code et c'est joli.

J'ai 2-3 questions ^^ comment tu fais pour les parties communes (header, footer...) d'une page pour éviter les redondances dans tes "controllers"? Pour éviter d'avoir a répéter les memes choses de controler en controler ^^

Une autre petite question (là c'est pour bien comprendre ta philosophie de pensée ^^ ) qu'elle est l'avantage d'avoir des exceptions par type? de ne pas avoir (par exemple) des phrases en anglais directement dans ton code? de standardiser les erreurs en les externalisants ? que faire dans le cas d'une erreur un peu exotique qui n'existe qu'une fois?

Voila j'espère avoir de petite réponse.
En tout cas joli boulot ;)
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
28 avril 2008 à 18:08
Tout a fait ! :)

Le modele MVC s'applique encore, mais je pense pas que ce soit le cas pour une techno Web.
Utilisateur anonyme
28 avril 2008 à 18:04
C'est un peu la tendance du moment, les MVC intégrent peu à peu les frameworks JS.

Pour la découpe MVC, effectivement elle date et ne correspond plus aux technos client léger de nos jours.

La partie VUE se décompose dans toutes ces parties :

- CSS : présentation
- XHTML : données
- JavaScript : code partie client

Et pour aller plus loin, la partie code client va elle aussi se décomposer...

Du coup la partie vue est un vrai chalenge des frameworks car c'est elle qui apporte la facilité d'intégration (marché dédié aux prestations en services d'intégration)
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
28 avril 2008 à 17:35
Je vais corriger ca pour parse_url (au moin traiter l'erreur).

En fait pour le js je suis parti du fait qu'il se situe dans la partie Vue du modèle MVC. Si l'on veux intégrer du Javascript dans un framework Php, alors (d'apres moi), ce n'est plus du MVC, mais quelque chose du genre Modèle, Controlleur, Interacteur, Presentation, ou Interacteur serait la partie graphique.

C'est d'ailleur ce que l'on constate, quand on prends par exemple Zend, Cake, Code Igniter. Ils n'utilisent peu ou prou du Javascript.

Mais peut-etre que pour un framework travaillant sur une technologie Web, et vu l'avancée technologique des choses, il serait préférable d'envisager d'ajouter une couche à ce vieux modèle MVC ? :)
Utilisateur anonyme
28 avril 2008 à 17:16
Pour parse url il retourne un mixed, et tu ne vérifies pas le résultat avant de l'utiliser :
http://www.php.net/parse_url
>> Pour les URLs vraiment mal formées, parse_url() peut retourner FALSE et émettre un E_WARNING
(mais là je chipotte - c'est plus à prévoir)

Sinon dommage d'aborder ton dév de cette manière. Des frameworks MVC y'en a au moins 10 connus et des centaines comme le tien. Du coup tu risque d'être le seul utilisateur de ta création ce qui en soit est dommage par rapport à ton travail et la nature du site d'échange.

Une proposition qui pourrais donner un peu d'attrait à l'existant, exploites la partie RIA - pas vraiment intégrée aux frameworks.

Exemples :
http://extjs.com/ ou un peu plus simple - scriptaculous

La partie intégration de Ext JS (par exemple) est lourde car faut tout déclarer en JS alors qu'un XML ferais l'affaire, et un controler gérant la com en ajax ça serais sympa.

Si par exemple tu simplifie l'utilisation d'un tel framework en découpant partie JS/PHP et en simplifiant la déclaration du code client ça va faire un framework incontournable dans le domaine des applicatifs RIA.
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
28 avril 2008 à 16:41
Yop :)
Pour parse_url, si la syntaxe est correcte, je ne vois pas en quoi ca pourrait poser de problemes ?
La prochaine version du framework devrait utiliser PDO et être totalement compatible avec

Pour les requetes sql dans le controlleur, c'était pour avoir quelque chose en exemple, j'ai indiqué sur mon site que j'envisage d'intégrer la gestion d'un ORM dans les prochaines versions, c'est pour cela :p tout n'est pas encore fini ! (:

Pour la vue, c'est un moteur de template tres basique. Il est prévu que je le retravaille afin de proposer quelque chose de compatible avec la plupart des moteurs de template (travailler sur une abstraction au plus haut). Mais sache que Php, à la base, est un moteur de template donc son usage est correct dans ce cas :)

Pour l'instant ce framework n'a rien de révolutionnaire par rapports aux autres, c'est juste un exercice pour évaluer mes compétences, peut-etre qu'à terme, il aura des avantages que les autres n'ont pas ?

En tout cas merci de tes remarrques :) Tout est noté ! :)
Utilisateur anonyme
28 avril 2008 à 16:33
Salut,

Je viens de regarder ton exemple et un peu l'organisation de ton framework mais sans rentrer dans les détails.

Mes conseils afin de t'aider à l'améliorer seraient les suivants :
1. Remplaces parse_url par une vraie classe, car parse_url peut renvoyer faux dans certains cas et a un fonctionnement différent selon versions - puis POO c'est mieux. (c'est dans la démo)

2. Dans le modéle MVC on sépare la vue, le controleur et le modèle, or tu gére le modèle de données dans le controleur : SELECT ... FROM ... - pour gérer le modéle il te faut faire une lib ORM ou en utiliser une (http://pdomap.webframe.fr/)

3. La gestion de la vue est un peu basique, tu devrais augmenter le niveau d'abstraction et ne pas utiliser de PHP, généralement cette partie peut être construite ou adaptée par un designer. Smarty malgré son succès n'est pas une solution à mon avis. Je penche perso pour Prado - voir http://www.xisc.com/ pour avoir une petite idée de leur bijou.
C'est une super alternative aux Html Helpers.

-----

Parcontre c'est du bon boulot, manque une doc permettant d'avoir une vue globale sur ton framework.

Sinon réinventer la roue ce n'est pas mal des fois, juste dit en quoi ta roue est mieux que les autres et à quelle problématique elle répond car au bout du compte le but est de faire adhérer les développeurs à ton framework donc faut leur faciliter le choix et le comparatif avec les autres frameworks.
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
16 avril 2008 à 04:49
Voila une petite mise à jour :)
J'ai modifié le systeme d'exceptions comme proposé par Malalam. Si vous voyez des incompréhensions (genre un type d'exceptions qui ne convient pas), n'hésitez pas à me le dire.

Ce coup-ci j'ai joint un exemple normallement fonctionnel, vous n'avez qu'a dézipper et vous rendre sur la page et hop ca devrait etre tout bon :)

N'hésitez pas à me prévenir des différents problemes afin d'améliorer encore le code !

Malalam si tu à d'autres conseils, je suis avide ! :)
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
12 avril 2008 à 13:34
malheureusement nan :/
Mais c'est pas une mauvaise idée, je vais le faire ! :)
Je vous tiens au courant :)
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
12 avril 2008 à 13:20
salut, ouais pluôt sympa et rigoureux ton ptit framework as-tu un doxigen en ligne par hasard ou autre?
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
11 avril 2008 à 23:30
J'avais pas remarqué un point, mais Malalam, merci pour ta note, je suis flaté ! :)

@Yoman64 : En fait, j'ai considéré la zone helpers comme une zone de tolérance. Un helpers html à le droit de contenir du html (tu remarquera que c'est le cas pour TableMaker, et FormHelper) car justement leur usage ne les destines qu'à afficher du html. J'ai d'ailleur du mal à concevoir la chose autrement. Si vous avez des idées, je suis preneur !! :)

Quand aux double quotes, oui, tu a raison ! La honte OUUUHHHHH :p.
Pour donner une excuse, j'ai fait un exemple vite fait, et je l'ai fait pendant que je développais du javascript, j'ai un peu mélangé les codes (je met des double quotes en js) ! :)
Tu remarquera que (normallement), dans le framework en lui-même il n'y a pas ce genre de choses :)

Si vous avez le temps, testez-le, faites moi remonter les divers bugs et problemes afin de le corriger et de l'améliorer ! :) Merci beaucoup :)
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
11 avril 2008 à 21:51
Salut,

Moi je ferai pas de longs commentaires sur ton code (tout d'abord parce que je n'ai jamais tenté de faire un framework(enfin si, j'en ai commencé un dernièrement...) et j'en ai rarement utilisé, et aussi parce que c'est un boulot énorme qui semble très bien fait).

Ceci dit je suis d'accord avec l'idée que malalam se fait de la pagination, ton code ne devrait pas sortir de html IMHO.

Mais une chose que je remarque tout de suite (Rooooooooh je suis pas fier de toi codefalse ;-))
C'est ÇA: $aInfos['title'] = "Bienvenue sur mon site";
des DOUBLES QUOTES ÇA VA PAS !!! Mouarf je déconne... enfin...

Bonne chance pour la suite :)
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
11 avril 2008 à 18:57
@Malalam : Merci pour tes infos, c'est toujours plein de bon conseils. Pour les exceptions, c'est pas con du tout, et en plus en java on en croise souvent !! :p Jvais prendre note !
Pour Db, en fait c'est prévu que je refasse toute la couche dans la verson 0.2 pour l'adapter à PDO. Je me suis rendu compte apres coup que PDO était implémenté de base dans PHP5.1 donc autant en profiter, puisque à cause de la SPL, mon framework nécéssite un php au minimum 5.2 ! :)
L'idée serait de copier PDO en objet php comme ca si le serveur n'a pas pdo, ton driver, au lieu de l'appeler pdo_DRIVER, tu l'appel juste DRIVER et c'est ma classe qui prends en compte la gestion avec la bdd, plus PDO. Et tu n'a rien à changer au niveau de ton code :)

Pour la pagination, de toute facon c'est moche ! :p C'est une des classes dont j'en suis le moin fièr. En fait chaque fonctions privées de rendu fait en général le même travail, à quelque points pres. Ce n'est pas du tout le même principe que la poo ou ce qui se répète doit être centralisé (entre autre).
Par contre le fait qu'il y ait du html est volontaire. Tu sais très bien que je ne mettrais pas des données spécifiques dans une fonction sans raison. En l'occurence, là c'est un helpers spécialisé pour le html, donc je me le permet. Après, on peux voir pour passer la réponse en paramètre, mais dans ce cas là j'aurai besoin d'aide pour trouver une structure potable ! :)

En tout cas merci pour tes très bon commentaires, ils seront fortement pris en comptes !!! :)
Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 2
11 avril 2008 à 17:57
Oui je parlais du site ;) Merci pour le lien.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 avril 2008 à 17:35
Hello,

joli travail, ça se présente bien ton framework :-)
J'ai franchement pas le temps de tout regarder (et puis je ne le ferais pas en un coup lol).
Donc tu auras des commentaires de ma part de temps en temps.
- 1er truc que j'ai regardé (et sur lequel je dois donner mon avis, évidemment...quand tout va bien je ne dis rien) : concernant ton abstraction de DB, la méthode escape() ne doit pas être dans aDBManager : c'est bien trop dépendant du serveur DB utilisé.
- tu devrais créer des exceptions par type, plutôt que par classe. Inspire-toi des exceptions de la SPL qui sont un modèle du genre. Un exemple, la méthode seek() de aDBManager renvoie une exception de type DbException en cas de dépassement. C'est une erreur. Ce doit être une exception de type overflow ou un truc dans le genre. Et mieux, il y en a une toute prête dans la SPL pour ça, et comme tu utilises la SPL...Et puis fonctionner ainsi te permet de factoriser : tu as plusieurs types d'exception qui renvoient en réalité la même chose (l'exemple le plus flagrant étant les exception pour cause de mauvais typage des arguments passés à une méthode : tu pourrais avoir une exception de type argsException, plutôt, par exemple).
- xmlLimit : il existe une classe SPL SimpleXmlIterator, ou un truc dans le genre. Mais elle n'est pas encore très fournie. Juste pour aider un peu ;-)
- je ne suis pas d'accord avec ta façon de gérer la pagination. Pas que ta classe soit mauvaise hein...mais tu DOIS séparer le rendu du moteur interne. Une pagination, c'est un total d'items, un nombre d'items à afficher, et un nombre de pages nécessaires pour tout afficher. C'est tout. Tu devrais te contenter de calculer ces chiffres. Tu peux présenter des types d'affichage via des templates. Et à mon sens, tu devrais créer un moteur JS pour gérer les interactions. Mais une classe PHP qui retourne différentes vues pour différents styles de pagination, je ne pense pas ça opportun.

Bon, ça suffit pour cette fournée :-)
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
11 avril 2008 à 16:10
Perso j'utilise Firefox ... sous linux :p
Mais je viens de comprendre, tu parle des sources sur mon site ou sur phpcs ?
Sur mon site, oui, c'est normal, elles ne fonctionnent pas :p je corrige le bug ce soir :p
Mais tu peux voir l'état actuel de la chose à cette adresse :
http://www.reflectiv.net/Catapult/sources.php
Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 2
11 avril 2008 à 16:00
C'est peut être parce que j'utilise Firefox... et toi IE?
Je reboot sur Win... et je confirme ou infirme.
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
11 avril 2008 à 14:05
Merci de ton avis.
C'est bizar que les sources ne marchent pas car je ne rencontre aucun probleme pour les afficher ?!
Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 2
11 avril 2008 à 13:56
Salut,

Il est sympa le concept, sympathique aussi le site. Mais la visualisation des sources ne fonctionne pas...
J'attends de voir ce que ça donne chez moi pour commenter le projet en lui même.

A bientôt
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
11 avril 2008 à 12:36
Alors il est possible d'avoir plusieurs fichier de configuration, et il est aussi possible d'avoir des fichiers de configuration chargeables en xml, ini ou php (comme présenté ici) mais pas en yaml, je ne connaissais pas ce petit là :p

Si tu veux regarde du coté de /Config/Config.php tu verras les différentes possibilités :)
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
11 avril 2008 à 12:22
Joli travail ! Par contre, pourquoi ne pas avoir écrit un fichier de configuration avec le format ini, xml ou yaml ? Est-il possible d'avoir plusieurs fichiers de configuration également ?
Rejoignez-nous