Paf (php / ajax framework)

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é client comme le parsage de code XML, la gestion du fait que ce qui est reçu peut être du JSON, du XML ou du texte simple, la gestion des requêtes qui peuvent être automatiquement arrêté après le temps que l'on veut et la gestion des requêtes qui sont mis dans une file d'attente pour éviter de surcharger le serveur. Il y a aussi tout les options qui sont offert dans tout les scripts de se genre comme le mode GET/POST, asynchrome ou non, etc. Le tout est codé orienté objet dans la mesure où Javascript le permet.

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 :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>..:: Démonstration du framework PAF ::..</title>
	<script type="text/javascript" src="../js/PAFClient.js"></script>
	<script type="text/javascript" src="../js/Resultat.js"></script>
	<script type="text/javascript" src="../js/misc.js"></script>
	<script type="text/javascript" src="../js/XMLParser.js"></script>
	<script type="text/javascript">
		var objConnexion = new PAFClient();
		
		// URL vers lequel on fait les requêtes //
		objConnexion.setURL('demo_serveur.php');
		
		// Définit si on veut qu'il réessai la requête si elle échoue //
		objConnexion.setRetryOnFail(false);
		
		// Définit le temps avant lequel une requête soit automatique coupée // 
		objConnexion.setTimeoutTime(3000);
		
		// Définit si la requête est asynchrome ou non //
		objConnexion.setAsynchronus(true);
		
		// Définit le mode de tranmission //
		objConnexion.setMethod("GET");
		
		// Test d'une commande normale //
		function test1 () {
			objConnexion.executerCommande('faire',new Array(), function (resultat) {
				alert(resultat.getText());
			});
		}
		
		// Test des plusieurs commandes simultanés //
		function test2() {
			objConnexion.executerCommande('delai',new Array(), function (resultat) {
				alert(resultat.getText());
			});
			objConnexion.executerCommande('delai',new Array(), function (resultat) {
				alert(resultat.getText());
			});
		}
		
		// Test de message entre les modules du serveur //
		function test3() {
			objConnexion.executerCommande('changement',new Array(), function (resultat) {
				alert(resultat.getText());
			});
		}
		
		// Test du parser XML //
		function test4() {
			objConnexion.executerCommande('xml', new Array(), function (resultat) {
				alert(
					"Premier élément : " + new XMLNode(resultat.getXML()).getRootNode().$('x')[0].value + "\n" +
					"Deuxième élément : " +  new XMLNode(resultat.getXML()).getRootNode().$('x')[1].getRootNode().$('x')[1].value
				);
			});
		}
		
		// Test du JSON //
		function test5() {
			objConnexion.executerCommande('json', new Array(), function (resultat) {
				alert(
					"Premier élément 'x' : " + resultat.getJSON().x[0] + "\n" +
					"Deuxième élément 'x' : " + resultat.getJSON().x[1]
				);
			});
		}
	</script>
</head>
<body>

<form>
	<b>Test 1 :</b><br />
	<p>Test le plus simple</p> 
	<input type="button" value="Test 1" onclick="test1()" />
	<br />
	<br />
	
	<b>Test 2 :</b><br />
	<p>Test des requêtes qui timeout, du retryOnFail et du système de mise en queue. Il est conseillé d'avoir Firebug pour voir exactement ce qui est fait.</p> 
	<input type="button" value="Test 2" onclick="test2()" />
	<br />
	<br />
	
	<b>Test 3 :</b><br />
	<p>Test côté serveur des message entres les modules.</p> 
	<input type="button" value="Test 3" onclick="test3()" />
	<br />
	<br />

	<b>Test 4 :</b><br />
	<p>Test du parse XML et côté serveur de la génération de XML.</p> 
	<input type="button" value="Test 4" onclick="test4()" />
	<br />
	<br />
	
	<b>Test 5 :</b><br />
	<p>Test du JSON côté client et serveur.</p> 
	<input type="button" value="Test 5" onclick="test5()" />
	<br />
	<br />
</form>

</body>
</html>

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é :
IE5.5+
Firefox 3 (version 2 non testé)
Google Chrome
Safari
Opéra

Le projet est aussi disponible sur PHPCS: http://www.phpcs.com/codes/PAF-PHP-AJAX-FRAMEWORK_49492.aspx

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

Codes Sources

A voir également

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.