Paf (php / ajax framework)

Soyez le premier à donner votre avis sur cette source.

Vue 8 375 fois - Téléchargée 1 066 fois

Description

Depuis déjà quelque semaine si ce n'est pas quelques mois, je travaille sur un framework pour AJAX avec PHP, afin de faciliter le développement de site utilisant ces technologies. Le résultat est très intéressant puisque le framework gère énormément d'élément qui peuvent être problématique à gérer côté serveur comme la gestion des différentes commandes qui sont envoyées (si plusieurs modules doivent gérer une même commande ou si un module doit gérer toutes les commandes valides), la gestion des sorties (vos modules peuvent utilisés des technologies différentes comme JSON, XML ou du texte simple pour des commandes différentes sans aucun problème d'entête et d'encodage). Aussi, la structure est très orienté objet, chaque module que vous ajoutez est une classe. Un module peut gérer autant de commande qu'il le désire.

Toute la documentation, ainsi que les exemples d'utilisation sont disponible dans le zip. C'est un des projets que j'ai le plus documenté jusqu'à date. Vous devriez trouver toute l'information que vous cherchez dans la documentation qui fait 8 pages de long.

Source / Exemple :


<?php
// Classe principale //
include_once('../classes/PAFServer.class.php');

// Classes de sortie utilisés par les modules //
include_once('../classes/PlainTextOutput.class.php');
include_once('../classes/XMLOutput.class.php');
include_once('../classes/JSONOutput.class.php');

// Les modules //
include_once('classes/ModuleLog.class.php');
include_once('classes/ModuleTest.class.php');
include_once('classes/ModuleChangement.class.php');
include_once('classes/ModuleChangement2.class.php');

PAFServer::getInstance()->start($_GET);
?>

Conclusion :


Ceci est présentement la version RC1 (Release Candidate 1). Le modèle du core est définitif, mais je suis ouvert à toutes modifications à faire pour rendre le framework meilleur.

Compatibilité :

PHP5.1+

Le projet est aussi disponible sur JavascriptFR : http://www.javascriptfr.com/codes/PAF-PHP-AJAX-FRAMEWORK_49493.aspx

À venir, si j'ai le temps je vais faire quelques exemples plus complexe de l'utilisation du framework.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
J'ai rajouté le support pour la modification du DOM à partir de PHP. Pour le reste, je vais regarder Xajax et les autres framework que tu m'as parlé.

Merci de commentaire.
Messages postés
507
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
13 mai 2009
1
Simple et efficace, en effet ce code fonctionne bien. Ca me fait penser un peu à ce que j'utilise régulièrement : Xajax. Mais bien sur ce dernier est plus poussé (tu devrais jeter un oeil pour t'en inspirer dans tes versions futures).

Par contre je ne pense pas que cette source soit accès pour de gros projets. Au contraire, si on veut faire une petite appli web sans un gros script tel Xajax & co mais que l'on veut tout de même de l'objet et de la propreté côté javascript/php alors cette source est intéressante.

Pour une grosse appli, il faut aussi prendre en compte des frameworks tel Prototype ou ExtJS côté client et un framework côté serveur tel Zend Framework ou Symfony implémentant le MVC et les contextes (contexte ajax, contexte json...etc).

Exemple simpliste ExtJS et mon propre framework :
Ext.Ajax.request({url:'http://monappli/controller/action',success: fonctionOk});

Avec prototype c'était à peu près la même chose, donc pas besoin de ta source.

En fait ta source ou Xajax n'interviennent uniquement que dans 2 cas :

- Pas de moteur de templates
ou
- Pas de motif type MVC côté serveur

Donc nous avons besoin de générer du HTML dynamiquement par PHP, auquel cas Xajax donne ce genre de code (encore trèèèèès simpliste par rapport aux possibilités de ce dernier) :

$reponseXajax->assign('monDiv', 'innerHTML', ' Test ');

J'ai intégré Xajax dans mon propre framework et finalement je le regrette un peu... Etant donné que j'ai intégré Smarty pour la partie "Vue", Prototype m'aurait largement suffit pour le web.
Et dans mes actions appelées par ajax j'aurais demandé à Smarty de me construire mon résultat, j'aurais donc toujours gardé la séparation des couches.
Enfin bon, Xajax propose tout de même d'autres trucs intéressants, donc c'est pas trop grave ; ) .

Pour info, je développe une appli en ce moment "Full Ajax" avec ExtJS et Zend Framework. Mes codes d'appels sont encore plus simples qu'avec ton script et les possibilités beaucoup plus grandes (gestion des proxy par exemple, validation automatique de formulaire selon paramétrage... etc).

Pour finir : Arto_800 tu as fait une bonne source et pour moi son avenir réside dans ses possibilités à générer du code HTML et l'injecter très précisément par DOM à l'instar de Xajax.

A+

ps : ceci est ma vision personnelle, notamment basé sur des choix pris à un moment donné. Il y a d'autres possibilités de faire de l'ajax simplement...
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

voila , la note !!
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

ok je comprend mieux !! merci , mais c'est vrai que c'est fait d'abord pour des gros projets , je fais un petit cms en ajax pour mes propres besoins, et ton code me serait très utile, vais réfléchir à comment l'intégrer... mais sinon, c'est quand même un script très intéressant , il en existe t-il d'autre avec le même fonctionnement sur d'autre langage ?? en faite je suis même étonné que personne n'est rien posté de t-elle avant ... pense que ton script à bcp d'avenir , j'ai pas l'habitude de noter sur phpcs (noob :) )mais je pense pas me tromper ...

a++
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
Exemple 1 :

Dans le cas où tu veux faire un module qui log toutes les entrées qui sont faites avec le framework (comme l'exemple du module "ModuleLog" dans la démo). Tu te retrouves nécessairement pour chaque commande avec le module de log et celui qui gère la commande comme tel qui doivent être appelés.

Exemple 2 :

Supposons que tu fais un chat ajax et que tu as un module qui gère le login et un module qui gère les ban. Quand un utilisateur envoie la commande "je veux entrer", le module qui gère les ban doit savoir qui essaie de rentrer et repousser ceux qui ont été banni, et le module qui gère le login doit faire le login quand quelqu'un le demande.

Au départ, le code côté serveur servait pour un serveur de chat et moindrement que tu veux faire des services qui écoutent sur des commandes qui sont déjà géré ce genre de système est absolument nécessaire.

Je suis aussi venu à la conclusion que dans de tel cas il peut aussi avoir des conflits. Pour cela j'ai ajouté la possibilité qu'il y ait des communications entre les modules (tel que décrit dans la documentation). Quand tout le monde se parle les conflits possibles sont beaucoup réduit.

Dans la plupart des petits projets ce genre de système n'est pas nécessaire, mais j'ai voulu amené quelque chose de plus poussé que juste quelque chose de base qui ne fait que des "Hello World".
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.