PHP a 10 ans
Tarifs et inscriptions Accès

Le programme des deux jours

9 Novembre : Journée Fonctionnelle


9h30 - 10h15 : Présentation de PHP
Rasmus LERDORF
Rasmus LERDORF

A tout seigneur, tout honneur! L'ouverture de ce dixième anniversaire revenait naturellement à l'inventeur du PHP.

Rasmus LERDORF nous a rappelé qu'il y a dix ans, il trouvait bien lourd d'avoir sa logique applicative écrite en C : à chaque modification, il fallait repasser par les étapes de compilation et de construction de l'exécutable. La répétition de ces opérations a fait naître en lui le désir d'une solution plus simple, plus paresseuse même, selon ses propres termes : BE LAZY ! Et voilà comment l'un des programmeurs les plus importants de la planète nous expose tranquillement le peu de goût qu'il a de programmer : ce qui l'intéresse, c'est de résoudre des problèmes concrets. Pas n'importe lesquels : les problèmes qui se posent aujourd'hui, pas ceux qui ne se présenteront jamais. Et ce n'est pas sans fierté qu'il nous présente le site SAHANA (voir aussi Sahana-Pakistan.pdf) : grâce au PHP un site construit en moins d'une semaine permettait à des personnes séparées par le tsunami de décembre 2004 de se retrouver. Et des milliers d'entre elles ont pu rétablir le contact.

Progressant régulièrement au fil de ces 10 ans, PHP est devenu une entreprise sérieuse : plus de 1000 comptes CVS de développeurs, dont 463 pour le code, 260 pour la documentation, les autres pour la qualité, la révision du code. Quelles entreprises dans le monde peuvent aujourd'hui mettre 500 développeurs sur un projet ? Une dizaine, pas plus. Pour son créateur, qui pensait que PHP ne durerait pas plus de 6 mois, c'est une réussite qui tient à la qualité de la communauté qui s'est retrouvée autour des caractéristiques du langage. Son architecture lui permet d'intégrer les nombreuses technologies qui en font une plate-forme de développement et d'exploitation très complète.

Par exemple, PHP5 affirme cette capacité en intégrant très bien le XML. Et l'une des implémentations que Rasmsus affectionne pour sa facilité est le SimpleXML : elle permet de charger les noeuds XML dans des objets PHP.

Autre technologie, AJAX, qui fera l'objet d'une conférence entière permet d'enrichir le poste client léger par la mise en place de granules PHP qui renvoient au poste des fonctions javascript à l'intérieur même de la page. Ainsi, après avoir tapé les deux premiers chiffres d'un code postal, la technologie AJAX va envoyer une demande au serveur et recevoir en retour les codes postaux du département et les présenter à l'utilisateur dans la liste déroulante sans recharger la page.

Autre technologie encore, SOAP n'est pas terminé mais c'est l'une des implémentations les plus complètes après celle de Java.

La présentation de Rasmus s'est terminée très brillamment par la mise en oeuvre du Geocoding et de la Simple Embedded DHTML map qui permet de se déplacer sur une carte.

Voilà ce qui passionne Rasmus : des solutions simples et immédiates. Et voilà avec quoi il nous a passionné.



10h15 - 11h15 : Panorama des solutions libres
Cyril PIERRE de GEYER
Cyril PIERRE de GEYER

L'auteur du PHP5 avancé nous a ensuite fait parcourir le panorama des Solutions Libres. C'est à dire, de ces briques logicielles qui, selon sa définition, constituent un élément de factorisation.

Souvent gratuites, prêtes à l'emploi et soutenues par une communauté importante, elles permettent de répondre à des problématiques exigeantes. Le défaut de leurs qualités, est que chacune de ces briques est le plus souvent construite avec son propre template, illustrant le fait que « le template, c'est bien, surtout quand c'est le sien ». Par exemple, si vous voulez mettre en oeuvre un logiciel de commerce et un forum, vous aurez à faire à deux gestions d'utilisateurs différentes. En conséquence, l'internaute devra s'inscrire deux fois. Ce problème est parfois tempéré par l'existence de passerelles. Celles-ci doivent cependant être souvent réajustées lors des changements de version.

A gauche de cette vue panoramique, on trouve des utilitaires très appréciés, tels que EZPDF qui offre toutes les fonctions nécessaires à la production à la volée de documents PDF ou tels que HTML Mime Mail for PHP pour envoyer des courriels au format HTML avec ou sans pièces jointes.

Au centre, on note des couches logicielles d'abstraction de bases de données, telle ADODB. Si elles facilitent l'interopérabilité souhaitée plus haut, c'est cependant au prix d'une réduction au plus petit dénominateur commun : par exemple tous les SGBD n'implémentent pas la clause LIMIT de MySQL.

Enfin, on aura, à droite du panorama, de véritables applications complètes comme OsCommerce pour gérer un site de commerce ou SPIP pour disposer d'une gestion de contenu.

Les parcours possibles dans ce panorama seront rassemblés par l'AFUP dans la publication annoncée d'un livre blanc des solutions libres. Des notes globales en richesse fonctionnelle et en exploitation seront attribuées par les auteurs.

Devant ce foisonnement chaque jour plus riche, les repérages proposés par Cyril deviennent très précieux.



11h30 - 12h15 : Retour d'expérience : Crédit Agricole
Julien BERNARD
Julien Bernard

Julien BERNARD de Crédit Agricole Asset Management a présenté la première solution d'entreprise de la journée. L'intérêt a été de nous montrer comment une entreprise internationale de 3 400 personnes, la première de son secteur en France (gérant 390 Mds d'Euros), en est venue à adopter PHP : les éléments de coût et de sécurité ont été déterminant et la prise de risque faible pour le décideur.

Aujourd'hui 35 sites, tant en extra-, intra- et inter- net sont gérés essentiellement en PHP par les 15 développeurs de l'équipe.

Le choix d'un outil commun, Eclipse, et la mise en place de normes de codage ont permis un partage du code. Pour encourager cette standardisation, un plug-in a été écrit pour Eclipse : après une première phase de normalisation de présentation, ce plug-in signale ensuite par des commentaires dans le code les normalisations qui restent à faire.

Dans une attitude responsable vis à vis de la communauté des développeurs de logiciels libres, ce plug-in a été installé sur sourceforge.net et les sources peuvent être demandés.

Pour en revenir à la gestion de l'équipe un certain nombre de règles de l'eXtreme Programming sont déjà en place, celle des tests unitaires étant en cours.

En résumé PHP s'est avéré simple, performant, complet, efficace et standard. Ce dernier point permet de trouver facilement des développeurs.

Avec le choix de l'Open Source, la responsabilité des applications réintègre l'entreprise.


12h15 - 13h00 : MySQL 5 : les nouveautés Michael CARNEY & Stéphane VAROQUI, MySQL AB
Michael Carney

Stéphane VAROQUI nous a présenté les nouveautés tant attendues de MySQL 5 :

  • Vues
  • Procédures stockées
  • Déclencheurs et Précision Mathématique
  • Schemata
  • SQL Mode vérification du typage
  • Moteur de stockage FEDERATED
  • Normalisation des syntaxes SQL
  • Plus de variables et de statuts
  • Protocole transactionnel XA
  • Optimisation par « Index Merge »

Après nous avoir présenté la RoadMap de MySQL, il nous a décliné l'offre :

en terme de produit, à côté de l'offre sous licence GPL il existe une offre certifiée reconnue par les assurances.

Quatre consultants en France assurent optimisations et migrations (procédures stockées). En ce qui concerne la formation, le partenaire privilégié est Anaska.



14h30 - 15h30 : Bonnes Pratiques PHP
Guillaume PONÇON
Guillaume Ponçon

Quelles sont les pratiques de développement PHP éprouvées à l'heure actuelle ? C'est ce que nous a présenté l'auteur de Best practices PHP 5.

En premier lieu, le choix de l'organisation est important. Par exemple, faire appel aux méthodes agiles, comme l'eXtreme Programming et aux outils qui en facilitent la mise en place : un bon éditeur comme Eclipse ou phpEdit.

Ensuite, il est préférable de s'appuyer sur de bonnes ressources (et savoir les choisir) pour ne pas réinventer la roue : la librairie PEAR (en PHP) ou son extension PECL (en C) constituent deux exemples de référence.

Au niveau de l'exploitation, on séparera les environnements d'exécution pour le développement et la production, qui n'ont pas les mêmes objectifs. Pour la production par exemple, l'attention se portera sur les performances, la fiabilité et la sécurité. On disposera donc d'outils de remontée de bugs et de gestion des performances offert par exemple par la plate-forme Zend.

Si PHP est simple et souple, il est aussi très permissif. L'avantage de l'immédiateté qui en résulte doit être cadré par une rigueur qui s'appuie sur les meilleures méthodes de génie logiciel.

Les bons réflexes qui produisent des développements durables sont en général :

  • le respect des conventions de codage et de documentation,
  • la surveillance de la mémoire et des ressources à l'aide d'un débogueur comme Xdebug ou DBG,
  • la rigueur dans les déclarations de variables et le respect du modèle choisi,
  • la réutilisation.

En exploitation, l'utilisation d'un cache d'opcodes (codes machine) apportera un gain de rapidité d'autant plus important que PHP est un langage interprété. APC et eAccelerator sont les principaux caches utilisés.

La gestion efficace des développements passe par le dépôt de données : CVS ou Subversion. Les évolutions techniques s'appuient sur les couches d'abstraction offertes par la POO (Programmation Orientée Objet), l'utilisation d'un outil de modélisation tel qu'UML (Unified Model Language) et les motifs de conception (Design Patterns). Prévoir l'avènement de MDA (Model Driven Architecture) et PHP 6 est un plus pour la pérennité des développements.

Tous ces points sont développés dans le livre Best practices PHP 5 de Guillaume PONÇON qui paraît chez Eyrolles le 17 novembre 2005.



15h30 - 16h15 : PHP et LeMonde.fr : passé, présent (et avenir)
Olivier GRANGE LABAT
Olivier Grange Labat

Avec Olivier GRANGE LABAT du journal en ligne lemonde.fr nous avons une autre expérience d'utilisation du PHP en entreprise.

Pour servir 70 millions de pages lues par mois,il faut un outil performant qui permettent également la mise en ligne de plus de 200 nouveaux articles par jour.

C'est au moment d'une évolution importante, aussi bien en terme de coûts que d'investissements (nouveau langage imposé par l'éditeur) qu'a été décidé l'abandon de la plate-forme propriétaire.

Le choix de PHP s'est fait sous le paradigme « Faire mieux avec moins ». La short liste opposait 3 solutions. Et c'est finalement PHP qui l'a emporté à cause de

  • son faible coût (licence, formation, prestation, infrastructure)
  • son orientation Web
  • ses performances
  • ses références : Times, El Pais, Google

et ce, malgré un faible support XML (ce n'est plus vrai avec PHP5), l'absence de pooling et un interfaçage avec des systèmes propriétaires parfois absent.

Un premier pas a été fiat sur un plus petit site. Un framework a été progressivement mis en place. Il constitue maintenant une base saine et éprouvée qui assure une grande homogénéité de conception.

Du côté client, XUL est utilisé pour permettre une saisie aisée des articles.

Par rapport au système précédent, sans parler du prix de licence qui s'est réduit à sa plus simple expression, les temps de développement ont été divisés par 2 et la fiabilité multipliée par 3. De plus, les 4 frontaux Linux utilisés à 20 % ont avantageusement remplacés les quadriprocesseurs Sun utilisés à 70 %

Pour toutes ces raisons, le rôle de PHP va se développer au fil de la prise en compte de nouvelles applications.



16h30 - 17h20 : Retour d'expérience : Air Turquoise décolle avec PHP
François BILLARD MADRIÈRES
Francois Billard Madrieres

Nous avons terminé cette première journée orientée vers les expériences de PHP en entreprise par le cas d'une petite compagnie aérienne assurant 6 vols quotidiens sur un ATR42-500. Antoine de KERVILLER de la Compagnie Air Turquoise et François BILLARD MADRIÈRES son DSI externe ont mis en place en un temps record (3 mois) un système souple de réservation et de gestion qu'ils ont entièrement écrit en PHP.

Le choix de la méthode s'est avéré déterminant : un système d'états-transitions qui s'appuie sur des descriptions XML qu'interprètent des templates. Les requêtes SQL sont également générées automatiquement à partir de descriptions. Enfin le système de gestion d'écrans a été découplé et s'adapte aux données et au profil de l'utilisateur.

Le workflow applicatif est totalement intégré au système qui est composé de petites applications modulaires versionnées.

Il aurait été plus lourd de paramétrer de grosses applications existant par ailleurs. Et le choix d'une architecture légère a permis pour dix fois moins cher de développer une solution mieux adaptée à cette petite entreprise.

Très belle démonstration de puissance et de simplicité que permet l'utilisation du PHP lorsqu'il est allié à une architecture bien construite.



10 Novembre : Journée Technique


9h - 9h15 : Key Note
Perrick PENET, Damien SEGUY
Perrick PENETDamien SEGUY

Perrick PENET et Damien SEGUY, respectivement président et vice-président de l'AFUP, ont ouvert cette journée davantage orientée développeurs.

Ils ont rappelé l'action de l'AFUP, qui au-delà de ce forum de deux jours, réactualise le livre blanc du PHP en entreprise distribué à chaque participant et disponible également sur le site Internet de l'AFUP: https://afup.org/. L'AFUP organise également des journées à thèmes et facilite les échanges au sein de la communauté professionnelle du PHP.



9h30 - 10h15 : Présentation de PHP
Rasmus LERDORF
Rasmus LERDORF

Rasmus a d'entrée de jeu insisté sur sa priorité : se centrer sur le problème à résoudre sans se complaire dans la solution.

Pour illustrer cela, il a montré comment écrire simplement un compteur qui supporte la concurrence d'accès. Au lieu de gérer cela dans le code, autant s'appuyer sur le système d'exploitation qui gère cette concurrence. Cela donne une petit compteur très compact qui permet de connaître par page le nombre de visites par heure.

Puis il nous a parlé de l'évolution de PHP.

Par exemple, la gestion des variables temporaires en PHP4 n'avait pas prévu que des programmeurs puisse écrire du code comme cela :

{literal}

<?php
function foo() {
   return 3;
}
function bar(&$arg) {
   $arg = "banana";
}
bar(foo());
?>

{/literal}



Le problème est que foo() n'est plus une variable, puisque c'est une constante 3. Or dans l'appel, bar attend une variable.

Maintenant, en PHP5, seules des variables peuvent être passées par référence en ligne 8.

Il y a une erreur communément répandue qui consiste à vouloir passer par un tableau par référence même dans le cas où on ne le modifie pas, sous prétexte d'éviter à PHP de le copier. En fait, PHP ne le copie pas quand il est passé par valeur. Et c'est même plus long de le passer par référence que de le passer par valeur.

Rasmus a ensuite attiré notre attention sur les questions de sécurité. Par exemple sur la nécessité de contrôler les saisies. A l'aide de htmlspecialchar on peut vérifier que l'internaute n'a pas rajouté du code javascript au mot de passe. Plusieurs techniques de sécurité ont été exposées.

Efficacité et sécurité ont été les deux thèmes principaux de l'intervention très applaudie de Rasmus.



10h15 - 11h15 : Création d'une extension PHP
Michel HOEL
Michel Hoel

L'ouverture de PHP et la disponibilité du code permet d'aller jusqu'à créer des extensions. Et c'est pour répondre à la problématique de l'accessibilité des sites pour les handicapés que Michel HOEL a créé une extension PHP.

Il s'agit en effet d'analyser les sites pour déterminer si des non-voyants peuvent y naviguer. Le navigateur du poste client est doté de plug-in qui par voix synthétique lisent le contenu des balises (le alt des images, par exemple) et du texte. Encore faut-il que les balises soient correctement remplies, que les textes soient structurés par des titres tagués par <H?> et que les liens n'aient pas tous « Cliquez ici » en title. Il y a donc tout un ensemble de mesures à faire, et de règles à vérifier pour donner des conseils aux webdesigners.

Dans le cadre d'un projet mise en place avec France-Télécom, il a donc été décidé d'utiliser un moteur d'inférence basé sur CLIPS, un langage d'intelligence artificielle écrit par la NAS, puis repris par des universitaires. Ecrit en C ANSI, cet outil pouvait s'intégrer en tant qu'extension au langage PHP.

Comme les sources de PHP sont disponibles, et que le travail d'extension a déjà été fait par ailleurs, il suffisait de s'inspirer des structures habituellement utilisées.

La recompilation de PHP s'est faite avec 2 intégrations de CLIPS :

  • une version statique - - with - clips

  • une version dynamique - - enable – clips

Michel nous a montré concrètement comment créer un squelette de fichiers prêts à recevoir l'extension et comment, au final, phpinfo() nous présente bien l'extension CLIPS au même titre que mbstring, mysql ou zlib. L'extension elle-même a bien été séparée en deux parties, la première gérant les échanges avec CLIP, la deuxième avec PHP. Et une fonction de callback permet au moteur d'envoyer de renvoyer un flux de caractères sur un canal spécifique.

Grâce à l'architecture ouverte de PHP, des fonctions externes aussi sophistiquées qu'un moteur d'inférence peuvent ainsi devenir partie intégrante du langage.



11h30 - 12h15 : L'assurance qualité dans le projet PEAR
Arnaud LIMBOURG
Arnaud Limbourg

C'est ensuite Arnaud LIMBOURG, bien connu pour son implication depuis plusieurs années dans le projet PEAR, qui nous a parlé de l'assurance qualité.

PEAR est une librairie d'extensions de PHP écrite en PHP et qui dispose d'une grande base d'utilisateurs, de l'ordre du million.

Elle contient notamment QuickForm ou Mail Mime.

La qualité est d'abord affaire d'organisation. Les échanges entre utilisateurs de PEAR se font via des listes de diffusion à thème :

  • peargeneral pour les utilisateurs
  • peardev pour les développeurs de PEAR
  • pearqa pour l'assurance qualité de PEAR
  • pearwebmaster pour les site web http://pear.php.net
  • pearcvs pour le CVS de PEAR

Actuellement un gros travail est fait sur la documentation et LiveDoc sera bientôt disponible.

La qualité passe aussi par une standardisation des tâches courantes comme par exemple l'installation. Celle-ci est prévue en standard dans PEAR.

Et puis bien entendu la surveillance du respect des règles de PEAR, comme par exemple, de ne pas intervenir sur la configuration. Cette règle permet d'utiliser les paquetages dans le cas de serveurs mutualisés.



12h15 - 13h00 : Programmation Orientée Aspects en PHP
Gilles VANWORMHOUDT
& William CANDILLON
William CandillonGilles Vanwormhout

Nous avons terminé la matinée par une très brillante présentation de la programmation orientée aspects en PHP par Gilles VANWORMHOUDT et William CANDILLON.

Après avoir situé la méthode dans le champ général des méthodes actuelles, Gilles a montré les limites de la POO (programmation objet) : une application est organisée au moins autour de deux pôles, le pôle métier et le pôle technique (sécurité, authentification, gestion transactionnelle, etc.). Le développeur est donc écartelé entre ces pôles : faut-il privilégier la partie métier ou la partie technique dans le dessin de l'architecture objet ? Cela se traduit soit par du code tangling (entrelacement des aspects techniques avec les aspects métiers) ou du code scattering (éparpillement des aspects techniques) avec souvent des redondances,que la programmation était censé éviter.

Le mot aspect vient donc d'apparaître et va guider une nouvelle organisation du code suivant l'élaboration de KicZales au Xerox Park en 1997 : sans remettre en cause les apports de la POO, il s'agit de la compléter par une meilleure organisation des classes en les regroupant par aspect (métier, persistance, login, etc.). Lorsqu'une méthode d'un aspect a besoin d'utiliser une méthode d'un autre aspect, une instruction de greffe indiquera au pré-compilateur où trouver cette méthode et avec quels paramètres.

Chaque aspect gagne ainsi en homogénéité.

Le code applicatif va donc être produit ensuite au cours d'une opération de tissage (weaving) qui implémentera les greffes là où elles sont attendues. Et c'est le code résultant qui va être exécuté. La POA (programmation orientée aspects) est implémentée sur différentes plate formes. En ce qui concerne le PHP, cela a donné lieu au développement de phpaspect qui nous a été présenté.

La POA vient donc en complément de la POO.



14h00 - 15h00 : AJAX : Brillez avec vos applications web
Sébastien HORDEAUX
Sébastien Hordeaux

Sébastien HORDEAUX, l'auteur bien connu de l'excellent phpEdit nous a montré l'apport d'AJAX (Asynchronous JavaScript and XML) pour enrichir le poste client en apportant aux applications Web l'ergonomie des clients lourds.

Utilisé sur des produits aussi largement répandus que GoogleMail ou GoogleMap, cette technologie présente l'avantage de na pas avoir à faire de déploiement au niveau du poste client : au niveau du client n'intervient que le DHTML qui est déjà inclus dans le navigateur, sauf peut-être pour Mac.

Le principe consiste à lancer en asynchrone vers le serveur de petites interrogations. Les réponses viennent s'inscrire directement dans l'élément du DOM concerné sans qu'on ait à réafficher toute la page.

Sébastien nous en a fait la démonstration sur WIT, l'outil collaboratif de gestion de projets qu'il a développé http://www.waterproof.fr/wit/

AJAX est l'une des réponses à la demande croissante d'interactivité sur le Web.



15h00 - 16h00 : PHP et performances
Eric DASPET
Eric Daspet

Consultant bien au fait des questions de performances sous PHP, Eric DASPET a attiré notre attention sur les différents facteurs à prendre en compte.

Commençons par quelques idées reçues. Certains pensent que recompiler PHP va faire gagner du temps. Que ce soit en statique ou en dynamique (la différence est infime) on se retrouve surtout avec une configuration à maintenir et pas meilleure que celles que compilent les experts.

Mieux vaut s'attacher à mettre en place des modules comme FastCGI et procéder à divers réglages.

Par exemple, stocker les sessions en mémoire (mm), multiplier les serveurs revient moins chers que des journées de développement.

L'incidence de l'interprétation de PHP peut être limitée par l'utilisation de fonction de PECL écrite en C et donc très rapide.

Pour gagner en performance avec les SGBD, on a intérêt à mettre les gros fichiers LOB à l'extérieur (en ne gardant dans la base que le lien vers le fichier), ou encore à faire un choix judicieux d'index et à ne pas abuser se sous-requêtes dans les ordres SQL.

Il y a un intérêt à monter l'OPCODE en mémoire cache (APC, e-accelerator ou Zend).

Le profilage du code peut se faire avec Xdebug ou Kcachegrind

Une bonne utilisation de HTTP, en particulier la compression permet de gagner en bande passante.

C'est cet art souvent subtil de la pondération de ces éléments qui fera la différence. Et c'est ce qu'Eric connaît bien.



16h15 - 17h15 : PDO : Abstraction de base de données avec PHP 5.1
Wez FURLONG
Wez Furlong

Nous avons terminé les présentations techniques par celle de Wez FURLONG, Core Developer de PHP depuis 2001, le « roi du PECL » : c'est ainsi que l'ont surnommé ses collègues.

Il nous a présenté PDO (PHP 5 Data Object) dont le but est de permettre l'abstraction de l'accès aux données. Non pas l'abstraction de la base de données qui serait un tout autre sujet, trop long et trop coûteux à mettre en place.

Cette abstraction de l'accès aux données permet d'obtenir la meilleure performance, car

  • elle est écrite en C
  • elle tire parti du PHP5
  • elle donne accès aux fonctions communes des bases de données, mais aussi aux fonctions spécialisées.
  • PDO prépare et exécute les paramètres liés
  • Gère les transactions
  • Les LOBS
  • Les curseurs
  • Et rend cohérente la gestion d'erreurs au travers de toutes les bases.

Wez a terminé en nous montrant comment mettre en oeuvre ces différentes techniques.


17h15 - 18h00 : Session Questions & Réponses avec le PHP Core Rasmus LERDORF
Wez FURLONG
Zeev SURASKI
Andrei ZMIEVSKI
...
PHP Core

Le PHP Core est l'équipe qui pilote les développements autour de PHP. Ils étaient rassemblés pour une séance de Questions - Réponses avec le public : une occasion unique de les rencontrer et d'évoquer avec eux ce que PHP nous réserve pour les 10 ans à venir.


La maturité a été également visible dans l'excellente organisation du Forum et dans le choix très cohérent des conférences. Légèrement moins nombreuses que l'an passé, mais d'autant plus approfondies. La formule a trouvé sa vitesse de croisière. Mais y a-t-il une vitesse de croisière dans un domaine en si forte expansion ? Rendez-vous donc au Forum 2006 pour faire le point de la réalisation des évolutions qui nous ont été si bien présentées cette année.

Auteur des résumés :
Henry Cesbron Lavau, rédacteur expert



PHP
sponsors du Forum PHP 2005 Paris


ajorolap

Mandriva

MySQL

WaterProof editeur PHP
partenaires du Forum PHP 2005 Paris


Ass2l

Eyrolles

Programmez
organisateurs du Forum PHP 2005 Paris


Ajancia

Anaska

Nexen Services

No Parking

Odeyssa