Compte-rendu de la Conférence Internationale PHP 2006

Guillaume Rossolini

Je me suis rendu à la Conférence Internationale PHP les 7 et 8 novembre 2006. Voici ce que j'en ai retenu, plus une rapide exploration des thèmes qui m'ont le plus intéressé.

J'espère parvenir à vous transmettre une partie de l'enthousiasme dont j'ai été envahi ! N'hésitez pas à me donner votre feedback, à me faire savoir si vous souhaitez explorer les terrains évoqués ici, etc. Je serais heureux de vous guider si je le peux.

Par la même occasion, je vais expliquer les méthodes et les concepts abordés afin de vous permettre de les assimiler facilement. Ce reportage est un condensé de tutoriels ;)

Commentez

- Titre : Compte-rendu de la Conférence Internationale PHP 2006

- Auteur : Guillaume Rossolini

- Parution : 1 janvier 2006

- Mise à jour : 12 février 2020

- Licence : Copyright ® 2006 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- I-A. Remerciements

- I-B. Préambule

- I-C. Arrivée

- II. Mardi 7 novembre 2006

- 9h00 : L'ouverture

- 9h30 : XSL and how to use it with PHP 5

- L'intervenant

- Présentation

- Exemple d'utilisation

- Exemple selon php.net

- Conclusion

- 9h30 : The need for speed, ERM testing

- L'intervenant

- Présentation

- Installation

- Utilisation

- Conclusion

- 11h15 : AJAX-enabled websites with PHP

- Présentation

- Utilisation de la démo

- Conclusion

- 11h15 : PHP6 - PHP goes Unicode

- L'intervenant

- Présentation

- Conclusion

- 12h00 : Le buffet

- 13h30 : RAD 2.0 - Working with symfony

- L'intervenant

- Présentation

- Conclusion

- 15h15 : Service Component Architecture (SCA) for PHP

- L'intervenant

- Définitions

- Procédé

- Conclusion

- 16h45 : Einfaches Testen von Webapplikationen mit SimpleTest

- L'intervenant

- Présentation

- Utilisation

- Conclusion

- 19h00 : Frankfurt bei Nacht

- III. Mercredi 8 novembre 2006

- 9h00 : Exploring PHP - A language implementor's perspective

- Les intervenants

- Présentation

- Analyzable PHP

- PHP runtime

- Conclusion

- 9h00 : Filtering tainted data: PECL Input Filter vs. Zend_Filter

- L'intervenant

- Présentation

- Filter

- Zend_Filter_Input

- Conclusion

- 12h00 : Keynote - How to combine PHP technology with Java based on enterprise systems

- L'intervenant

- Présentation

- Performances

- Vitesse de développement

- Outils de développement

- Maintenabilité

- En vrac

- Conclusion

- 13h00 : Maturing nicely - PHP-GTK 2

- L'intervenant

- Présentation

- Installation

- Démonstration

- Nouveautés depuis PHP-GTK 1

- Conclusion

- 13h45 : Confession time - Deadly sins using MySQL and PHP

- L'intervenant

- Présentation

- Conclusion

- 15h30 : Integration und Migration zu AJAX

- L'intervenant

- Présentation

- Conclusion

- IV. Conclusion générale

- IV-A. Épilogue

- IV-B. Témoignage

- IV-C. Liens

I - Introduction

I-A - Remerciements

Je tiens à remercier Developpez et l'équipe de la conférence de m'avoir donné l'opportunité d'assister à cet évènement.

Parmi le staff de la conférence, trois jeunes femmes que j'ai fréquemment ennuyées avec mes questions durant les deux jours de ma présence : elles m'ont toujours accueilli avec un large sourire.

Les conférenciers, tous très amicaux et à l'écoute, que ce soit à la fin de leurs sessions ou pendant les pauses.

Enfin, les Allemands en règle générale pour parler français, anglais ou bien les deux. C'est une règle sans exception, 100 % des Allemands sont en mesure de communiquer avec le monde extérieur et je leur en suis infiniment reconnaissant, car mon allemand date d'il y a bien longtemps… Il m'a fallu quelques jours pour recommencer à comprendre ce qu'il se disait, mais je ne suis pas resté suffisamment longtemps pour pouvoir aligner plus de trois mots moi-même.

I-B - Préambule

La Conférence Internationale PHP 2006 est un évènement annuel qui a lieu à Francfort (Allemagne). En fait, un autre évènement avait lieu en même temps : l'Open Source Database Conference 2006. Les inscriptions étaient valables pour les deux rencontres, mais je me suis concentré sur PHP.

La conférence s'étalait sur quatre jours, du dimanche 5 novembre au mercredi 8 novembre 2006. Le dimanche et le lundi étaient réservés aux « workshop », tandis que le mardi et le mercredi avait lieu la conférence elle-même. Le mardi avait également lieu le « management day », soit une journée de sessions orientées vers l'entreprise.

Je n'ai malheureusement pas pu assister aux Workshop Days, je ne peux donc pas en dire grand-chose excepté que je regrette… Il s'agissait davantage de « travaux dirigés » que de « talks ».

Même chose pour le Management Day, qui avait lieu le deuxième jour : je ne suis arrivé que vers 3h le mardi matin donc bien trop tard.

Par contre, j'ai assisté à tout ce que j'ai pu dès le mardi matin jusqu'au mercredi soir. J'ai failli rater mon avion, d'ailleurs…

I-C - Arrivée

- Participants : no comment

Le réceptionniste de mon hôtel (qui n'était pas l'hôtel de la conférence) m'avait assuré que la conférence commençait à 12 h, il m'a bien eu ! Non non, le début était bel et bien à 9 h comme je pensais me souvenir. Puisque je suis arrivé à l'hôtel vers 3 h du matin, après l'avion et le trajet depuis Frankfurt Hahn (à 150 Km du lieu de la conférence), je dois dire que j'ai profité autant que possible des quelques heures qu'il me restait. J'ai parfois une fâcheuse tendance à m'assoupir en plein milieu des cours, surtout quand ils ne sont pas intéressants, et là je ne voulais pas donner une mauvaise impression…

Bref, je me suis réveillé à temps malgré tout.

Petit déjeuner dans mon hôtel, d'ailleurs cela fait du bien de retrouver un petit déjeuner allemand avec sa charcuterie et ses divers types de pain. Cela me manquait, depuis les six années que je n'avais pas mis les pieds en Allemagne.

La récupération du badge était un peu sportive, en fait le temps que je réalise que mon statut était Presse et non Visiteur…

II - Mardi 7 novembre 2006

9h00 : L'ouverture

- Participants : 100.

La séance d'ouverture était sympathique. La plus grande salle de l'hôtel NH était réquisitionnée pour l'occasion : une centaine de personnes étaient déjà présentes, les chaises n'étaient pas en nombre suffisant et le staff était occupé à accueillir les nouveaux arrivants.

J'ai manqué les premières minutes (petit déjeuner oblige…) et j'ai donc manqué les présentations, mais la brochure informait que Masoud Kamali est CEO de Software & Support Verlag.

On nous a présenté le programme des journées et les sponsors de l'évènement. C'était amusant par moments, notamment lorsque le représentant de Firebird a commencé à prendre d'assaut celui d'Oracle, un conférencier de MySQL jouant à l'arbitre… Je vous laisse imaginer le débat ! Heureusement, ce sont des personnes adultes et raisonnables. Ils ont vite arrêté leur petit jeu et nous avons pu libérer la salle pour la première session.

Sur la photo centrale, de gauche à droite : Holger Klemt (Firebird), Arjen Lentz (MySQL), quelqu'un de Chorizo!, Dr Oliver Frick (SAP, si je ne me trompe pas sur la personne), un consultant d'Oracle dont je n'ai pas retrouvé le nom, Tobias Schlitt (eZ Systems) et enfin Masoud Kamali.

9h30 : XSL and how to use it with PHP 5

- Conférencier : Arne Blankerts ;

- Participants : 60 ;

- Thème : Utilisation de XML ;

- Diaporamas : télécharger (miroir) ;

- Liens : XPath 1.0 et PHP-XSL.

L'intervenant

Arne Blankerts travaille dans une agence de publicité allemande, SalesEmotion AdSolutions GmbH. Il rédige des articles pour PHP Magazin, ses sujets d'intérêt principaux étant XML et XUL.

Présentation

Je ne suis resté que brièvement à cette session, puisqu'elle était très descriptive d'un aspect de PHP : l'utilisation de XPath. C'est certes intéressant, mais je préférais assister à la session sur les tests avec PHPT. Par conséquent, je risque de ne faire qu'une présentation sommaire…

XML est un format de document permettant de structurer des informations. C'est un conteneur de données.

XSL est un langage permettant d'écrire des feuilles de style pour XML. On utilise XSLT pour transformer des documents XML en d'autres formats (txt, HTML, etc.) ou XPath afin de parcourir le XML.

Exemple d'utilisation

Mon collègue GrandFather vous a aimablement concocté un exemple d'utilisation d'XPath avec la méthode DOMDocument et son alternative SimpleXML…

schedule.xml

<?xml version="1.0"?>
<schedule>
<talk>
<title>Exploring PHP - A language implementor's perspective</title>
<speaker>Julian Dolby et Graeme Johnson</speaker>
<time>9h00</time>
</talk>
<talk>
<title>Filtering tainted data: PECL Input Filter vs. Zend_InputFilter</title>
<speaker>Ben Ramsey</speaker>
<time>9h00</time>
</talk>
<talk>
<title>Keynote - How to combine PHP technology with Java based on enterprise systems</title>
<speaker>Tim Bray</speaker>
<time>12h00</time>
</talk>
<talk>
<title>Maturing nicely - PHP-GTK 2</title>
<speaker>Steph Fox</speaker>
<time>13h00</time>
</talk>
<talk>
<title>Confession time - Deadly sins using MySQL and PHP</title>
<speaker>Arjen Lentz</speaker>
<time>13h45</time>
</talk>
<talk>
<title>Integration und Migration zu AJAX</title>
<speaker>Gerd Schaufeldberger</speaker>
<time>15h30</time>
</talk>
</schedule>

example-dom.php

$sample_xml = file_get_contents('schedule.xml');

echo 'Recherche avec parcours itératif avec DOM :<br/>';
$document = new DomDocument();
$document->loadXML($sample_xml);
$schedule = $document->documentElement;
foreach ($schedule->childNodes as $talk) {
if ($talk->nodeType == XML_ELEMENT_NODE && $talk->tagName == 'talk')
{
$title = '';
$speaker = '';
foreach ($talk->childNodes as $child)
{
if ($child->nodeType == XML_ELEMENT_NODE && $child->tagName == 'title')
{
$title = $child->nodeValue;
}

if ($child->nodeType == XML_ELEMENT_NODE && $child->tagName == 'speaker')
{
$speaker = $child->nodeValue;
}
}

if ($speaker == 'Tim Bray')
{
echo $title . '<br/>';
}
}
}
echo '<br/>';

echo 'Recherche avec accès direct aux noeuds par leur nom avec DOM :<br/>';
$document = new DomDocument();
$document->loadXML($sample_xml);
$speakers = $document->getElementsByTagName('speaker');
foreach ($speakers as $speaker) {
if ($speaker->nodeValue == 'Tim Bray') {
$talk = $speaker->parentNode;
echo $talk->getElementsByTagName('title')->item(0)->nodeValue . '<br/>';
}
}
echo '<br/>';

example-simplexml.php

$sample_xml = file_get_contents('schedule.xml');

echo 'Recherche avec parcours itératif avec SimpleXML :<br/>';
$schedule = simplexml_load_string($sample_xml);
foreach ($schedule->talk as $talk) {
if ($talk->speaker == 'Tim Bray')
{
echo $talk->title . '<br/>';
}
}
echo '<br/>';

echo 'Recherche avec SimpleXML & XPath :<br/>';
$schedule = simplexml_load_string($sample_xml);
foreach ($schedule->xpath("/schedule/talk[speaker = 'Tim Bray']/title") as $title)
{
echo $title . '<br/>';
}
?>

Exemple selon php.net

Nous allons utiliser le langage XPath dans notre feuille XSLT afin de transformer un document XML en document HTML.

XML + XSLT = HTML

L'idée ici n'est pas de rechercher un élément, comme nous avons fait dans les exemples précédents, mais d'utiliser XSL pour transformer un fichier de données XML en une page Web.

Reprenez le schedule.xml ci-dessus et créez les fichiers suivants (largement inspirés de ceux proposés sur php.net/xsl) :

schedule-html.xslt

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="date" select="'8 novembre'"/>
<xsl:output method="html" encoding="iso-8859-1" indent="no"/>
<xsl:template match="schedule">
Voici la liste des sessions du <xsl:value-of select="$date"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="talk">
<h3><xsl:value-of select="title"/></h3>
<h4>by <xsl:value-of select="speaker"/> (<xsl:value-of select="time"/>)</h4>
<hr />
</xsl:template>
</xsl:stylesheet>

index.php

<?php

$input = new DOMDocument();
$xsl = new XSLTProcessor();

$input->load('schedule-html.xslt');
$xsl->importStyleSheet($input);

$input->load('schedule.xml');
echo $xsl->transformToXML($input);

?>

Chargez le script PHP, vous obtiendrez une page HTML bien présentée contenant les informations du XML.

Conclusion

Pour de petites bases de données, XML est un format intéressant, car il est à la fois lisible et utilisable.

Avec XPath et SimpleXML, il est possible de rechercher des informations de manière relativement simple et avec une utilisation de ressources souvent moins importante que dans le cas d'une base de données.

Ne négligez pas XML et XPath.

9h30 : The need for speed, ERM testing

- Conférencier : Marcus Börger ;

- Participants : 50 ;

- Thème : Test d'applications ;

- Diaporamas : téléchargement (miroir) ;

- Liens : Talks, Documentation de PHPT.

L'intervenant

Marcus Börger, alias helly, est actif dans les communautés PHP, PECL, Zend. Il est l'un des développeurs du noyau de PHP.

Présentation

Comment sont testées les fonctions internes à PHP ? Comment savoir si un script PHP s'exécute comme il le devrait ?

L'idée de PHPT est simple : écrire des fichiers de test selon un format spécifique. Un script PHP exécute le test et compare le flux envoyé à la sortie standard avec la portion spécifiée dans le fichier de test. Le résultat de cette comparaison détermine la qualité du script.

Installation

C'est très simple, il s'agit d'un script PHP. Téléchargez le source de votre version de PHP (php.net/downloads.php) et observez bien : vous verrez un script « run-tests.php » dans la racine de l'archive, ainsi qu'un répertoire « tests » contenant de nombreux fichiers ayant une extension « .phpt » : ce sont les tests utilisés pour tester la validité d'un script PHP.

Utilisation

À l'aide des lignes de commandes, l'objectif est d'exécuter le script run-tests.php et d'en observer la sortie.

Exemple de test pour un script qui fonctionne : test-1.phpt

--TEST--
Hello World
--FILE--
<?php echo "Hello World"; ?>
--EXPECT--
Hello World

Exemple de test pour un script qui ne fonctionne pas : test-2.phpt

--TEST--
Hello World
--FILE--
<?php echo "Hello World
--EXPECTF--
Parse error: syntax error, unexpected $end in %s.php on line %d

Placez ces scripts dans le répertoire de run-tests.php puis lancez la commande suivante :

php run-tests.php

N'ayant pas essayé moi-même, je ne m'aventurerai pas davantage. Il me semble tout de même qu'il faut déclarer une variable d'environnement TEST_PHP_EXECUTABLE pour donner le chemin jusqu'à PHP.

Conclusion

Cette méthode de test fonctionne uniquement pour les scripts ayant une sortie. Cependant, il devient complexe de tester les scripts ne générant aucune sortie. C'est par exemple le cas de l'ensemble des classes : il est impossible de tester directement une classe, il faut donc écrire le test pour un script utilisant la classe. C'est cette limite qui m'a poussé à ne pas tester PHPT plus amplement.

J'estime que la méthode PHPT est très efficace et très pratique pour de petits tests, par exemple le retour d'une fonction. Pour de plus amples utilisations de PHP, je ne sais pas s'il faut recommander PHPT (mais je peux me tromper, auquel cas je vous serais reconnaissant de me le faire savoir).

En résumé, j'ai l'impression que l'écriture de tests est un procédé complexe et qui est encore largement sujette à erreurs…

Cependant, si l'on développe en fonction des tests (plutôt que d'écrire les tests en fonction de ce qui est développé), c'est-à-dire si on utilise la méthode connue en tant que « test-driven development », alors l'exécution de tests à la PHPT prend tout son sens.

11h15 : AJAX-enabled websites with PHP

- Conférencier : Arne Blankerts ;

- Participants : 80 ;

- Thème : Web 2.0 ;

- Diaporamas : télécharger (miroir) ;

- Exemples : télécharger (miroir).

Présentation

Derrière son air vaguement timide, Arne est quelqu'un de bien sympathique et qui connaît son sujet. Je n'ai malheureusement pas pu rester jusqu'au bout de la présentation, ainsi je ne vous en donne ici qu'un aperçu ingrat (car incomplet).

La phrase que je retiens : « PHP 4 is dead ».

Des idées intéressantes :

- AJAX tue le référencement ;

- AJAX n'a pas fondamentalement besoin de XML (JSON est possible aussi)

Utilisation de la démo

Décompressez le répertoire « ajax » de l'archive dans un répertoire de votre serveur Web et appelez-le fichier « demo.html » : vous verrez apparaître un message donné par le script « echo.php ». Nous pourrions imaginer ici d'utiliser une base de données pour afficher une chaîne en fonction d'un paramètre… Il suffit d'avoir un peu d'imagination.

Appelez maintenant la page « suggest.html » et tapez une lettre, par exemple « s » : AJAX permet de faire des suggestions de mots.

Enfin, chargez la page d'index et utilisez les boutons « précédent » et « suivant ».

Conclusion

AJAX, c'est bien.

AJAX, c'est à utiliser avec précaution.

L'exemple de la galerie est typique de ce qu'il ne faut pas faire, sous peine de ne pas être référencé. En effet, puisque les moteurs de recherche ne comprennent pas le JavaScript, ils sont incapables de voir toutes les informations accessibles par AJAX. Ici, il s'agit par exemple des descriptions des photos.

Si vous souhaitez en savoir davantage sur AJAX, n'hésitez pas à consulter notre page de cours AJAX et particulièrement (pour compléter l'exemple des suggestions) le tutoriel par Denis Cabasson : AJAX - Une autocomplétion pas-à-pas. Si c'est le référencement auprès des moteurs de recherche qui vous intéresse, rendez-vous dans nos cours de webmarketing.

11h15 : PHP6 - PHP goes Unicode

- Conférencier : Derick Rethans ;

- Participants : 50 ;

- Thème : Nouveautés ;

- Diaporamas : télécharger (miroir) ;

- Liens : Blog.

Derick Rethans

L'intervenant

Derick Rethans travaille actuellement comme chef du projet eZ components pour eZ systems A.S. Il a contribué à PHP au travers d'extensions comme Date et InputFilter, en plus de diriger le groupe QA (cf. la session de tests présentée plus tôt dans la matinée par Marcus Börger). Il travaille également sur Xdebug.

Présentation

L'idée principale est que PHP 6 supportera Unicode à tous les niveaux. Les chaînes seront encodées (en interne) en UTF-16, ce qui permet aux développeurs d'écrire leur code avec l'alphabet de leur choix (ce que je ne recommande absolument pas, au passage). Vous pouvez voir un cas extrême en photo ci-dessus…

La bibliothèque ICU sera utilisée par PHP 6 pour gérer tout Unicode.

Pour gérer la compatibilité descendante, il sera possible d'utiliser une directive du php.ini pour définir l'encodage par défaut. En effet, les scripts seront maintenant considérés UTF-16 donc chaque caractère sera sur 2 octets. PHP 6 ne gère plus les flux comme des octets (« code units »), mais comme des caractères (« code points », chacun de 2 octets).

Script écrit en UTF-8

declare(encoding="utf-8");

Je sens que nous allons bien nous amuser, puisque l'encodage de sortie (unicode.output_encoding) peut être différent de l'encodage du script (unicode.script_encoding), de l'encodage « runtime » (unicode.runtime_encoding) ainsi que de l'encodage géré par le navigateur (default_charset)… Tout cela étant encore différent de l'encodage interne de PHP, qui est UTF-16…

Voyons un exemple pour illustrer ces conflits.

Croisement d'encodages en PHP 6

declare(encoding="iso-8859-1");
ini_set('unicode.output_encoding', 'utf-8');
$str = "r&#248;dbærsyltet&#248;y<br/>";
$bstr = b"r&#248;dbærsyltet&#248;y<br/>";
echo $str, $bstr;

Note : Le code ci-dessus devrait afficher deux lignes de texte différentes, puisque d'une part le caractère « ø » n'existe pas dans le jeu de caractères « iso-8859-1 » et, d'autre part, le « b » situé juste avant le guillemet oblige PHP à traiter la chaîne en tant que chaîne « binaire », donc à ne pas tenir compte de l'encodage défini avec le mot-clef « declare » au début du script. Ainsi, le premier affichage devrait se faire à l'aide du jeu de caractères « iso-8859-1 » tandis que le second affichage utilise « UTF-8 ». Je viens d'essayer sur ma machine de test, les deux lignes sont identiques… Je prévois des casse-têtes même pour déterminer pourquoi un code fonctionne alors qu'il ne le devrait pas ! Je soupçonne mon Windows de s'être adapté sans me le dire…

rÃ&#184;dbÃ&#166;rsyltetÃ&#184;y
r&#248;dbærsyltet&#248;y

Conclusion

PHP 6 est actuellement en développement. Une première version « RC » (release candidate) devrait sortir avant la fin de l'année 2006.

Si vous souhaitez découvrir PHP 6 tout en conservant la possibilité d'utiliser PHP 5, je vous recommande la lecture de ce tutoriel : Alterner entre plusieurs versions d'Apache et de PHP.

12h00 : Le buffet

Le buffet

Le buffet était un vrai régal. Plus d'une semaine après l'évènement, je me rappelle encore des beignets de champignons…

Tout au long du séjour, des boissons ont été mises à disposition des participants. Bien entendu, il s'agit de boissons allemandes, elles étaient donc systématiquement gazeuses : jus de pomme gazeux, jus d'orange gazeux, eau gazeuse ; pas moyen d'avoir de l'eau plate, cela n'existe pas en boisson.

Hormis le buffet de midi, un petit déjeuner était organisé à la pause du matin et un goûter à la pause de l'après-midi. Le soir, un autre buffet était mis à disposition.

13h30 : RAD 2.0 - Working with symfony

- Conférencier : Dustin Whittle ;

- Participants : 18 ;

- Thème : Standards de développement ;

- Diaporamas : télécharger (miroir) ;

- Liens : Le site officel de symfony.

L'intervenant

Dustin Whittle travaille en freelance comme consultant en technologie. Il est actif dans a communauté PHP principalement au sein du projet symfony, pour lequel il propose des améliorations et des corrections.

Présentation

symfony est un projet d'origine française. C'est un framework complet pour des applications Web et il est développé en PHP 5.

Il ne s'arrête pas à un ensemble de classes et de méthodes de travail, c'est aussi un ensemble d'outils pour :

- L'administration du projet ;

- La génération de code ;

- Les tests ;

- La documentation ;

- Le déploiement.

Le framework inclut :

- LIME : Tests ;

- Creole : Abstraction de bases de données ;

- PHPMailer : Envoi d'e-mails ;

- Prototype : Framework JavaScript ;

- TinyMCE : Édition avancée de texte ;

- DynArch.com : Calendrier ;

- etc.

symfony suit une architecture MVC : sfPropel est le modèle, sfView est la vue et sfAction le contrôleur.

D'autres Pattern Design sont proposés : sfContext est un Singleton, sfFeed est une Factory…

Conclusion

Vous l'aurez compris, ce ne serait pas rendre justice à symfony que le présenter ici en 20 lignes de code.

Je vous recommande de vous rendre sur le site officiel et de consulter la documentation sur le projet Askeet.

Ce qui me plaît le plus avec ce projet est le fait qu'il soit résolument PHP 5.

15h15 : Service Component Architecture (SCA) for PHP

- Conférencier : Matthew Peters ;

- Participants : 60 ;

- Thème : WebServices ;

- Diaporamas : télécharger (miroir) ;

- Liens : Page d'accueil de SCA, l'extension SCA_SDO en PECL.

L'intervenant

Matthew Peters travaille actuellement pour IBM à Hursley, Royaume-Uni. Il a contribué au projet SDO, distribué en PECL.

Définitions

Un composant (component) est une classe qui implémente la logique de l'application, c'est-à-dire le déroulement des actions.

Des interfaces, appelées services, mettent à disposition les possibilités des composants.

Des références sont des interfaces orientées services (c'est donc la même chose que ci-dessus) proposant des fonctions d'autres composants. Il s'agit donc de sortes de services Web destinés à un usage interne (non à travers le Web).

Procédé

La construction d'une application orientée service est décomposée en :

- L'implémentation (développement) des composants qui proposent leurs fonctions ;

- La liaison des composants et des références de manière à construire les services.

L'implémentation est de la programmation orientée objet classique.

La liaison est le point que j'ai trouvé particulièrement intéressant. L'idée est d'éviter de mélanger les couches : la logique applicative et le reste. Ce mélange est considéré comme inévitable la plupart du temps, car il y aura toujours besoin à un moment de demander à PHP d'inclure et de gérer les autres modules de l'application.

La solution apportée par SCA est d'effectuer cette liaison dans les commentaires du code. J'ai trouvé l'idée quelque peu étrange, mais néanmoins excellente. En utilisant les commentaires, nous n'avons aucune liaison dans le code PHP. Comme le dit le PDF de la session : « la liaison est déclarative, dans les commentaires ; la logique applicative est impérative, dans le code ».

Conclusion

Les composants SCA exposés en tant que WebServices peuvent être utilisés par n'importe quel client SOAP, sans qu'ils aient besoin de savoir qu'il s'agit de SCA. Inversement, les composants SCA peuvent utiliser des WebServices sans avoir besoin de savoir s'il s'agit de composants SCA.

Voici une approche très intéressante qui peut profiter aux grosses applications, qu'il s'agisse ou non de WebServices.

16h45 : Einfaches Testen von Webapplikationen mit SimpleTest

- Conférencier : Karl Heinz Marbaise ;

- Participants : 20 ;

- Thème : Test d'applications ;

- Liens : Télécharger, la documentation.

L'intervenant

Karl Heinz Marbaise travaille avec de nombreux outils open source : CMS, e-commerce, etc., aussi bien PHP que Java.

Présentation

SimpleTest est un framework de test pour PHP.

Le principe est de dériver les classes fondamentales de SimpleTest afin de les faire correspondre à votre utilisation. Dans vos classes dérivées, vous devez implémenter les tests au moyen d'assertions (assert…()) permettant de vérifier la validité de votre code.

C'est plus performant que PHPT dans la mesure à vous avez davantage de contrôle, vous pouvez tester davantage de choses. C'est aussi plus long à mettre en place puisque les tests sont eux-mêmes des classes qui peuvent avoir leurs bugs…

Utilisation

Je vous propose l'exemple du site de SimpleTest comme démonstration (attention, à exécuter avec PHP 4) :

Log.php

<?php

class Log
{
var $file;

function Log($string)
{
$this->file = $string;
}

function message($string)
{
$mode = 'a';
$handle = fopen($this->file, $mode);

if ($handle !== FALSE)
{
fwrite($handle, $string);
fclose($handle);
}
}
}

?>

index.php

<?php

require_once('simpletest/unit_tester.php'); // classe SimpleTest utilisée
require_once('simpletest/reporter.php'); // pour afficher le rapport
require('Log.php'); // la classe à tester

class LoggingTest extends UnitTestCase {
function testCreatingNewFile() {
@unlink('./test.log');
$log = new Log('./test.log');
$this->assertFalse(file_exists('./test.log'));
$log->message('Should write this to a file');
$this->assertTrue(file_exists('./test.log'));
}
}

$test = &new LoggingTest();
$test->run(new HtmlReporter());

?>

Suivant les droits d'accès à votre répertoire, le résultat sera différent.

Conclusion

Bien qu'écrit en PHP 4, SimpleTest est un framework assez pratique. Le souci majeur est d'apprendre à utiliser les classes.

Pour information, PHPEdit et Eclipse permettent tous deux d'écrire rapidement des scripts pour SimpleTest (Eclipse nécessite un plugin, tandis que PHPEdit le permet en natif).

De mon point de vue, le gros souci est que la version PHP 5 de SimpleTest n'est pas encore publiée. S'il faut commencer par réécrire le code du framework pour pouvoir l'utiliser sans problème, nous perdons en efficacité…

19h00 : Frankfurt bei Nacht

Le mardi soir, un ami (Wolfgang, photo ci-dessus) m'a emmené à Francfort. C'est une bien belle ville, mais ce soir-là il y avait du brouillard et je n'ai pas pu profiter de la fameuse ligne de gratte-ciels.

III - Mercredi 8 novembre 2006

9h00 : Exploring PHP - A language implementor's perspective

- Conférenciers : Julian Dolby et Graeme Johnson ;

- Participants : 20 ;

- Thème : Amélioration de PHP ;

- Diaporamas : télécharger (miroir).

Les intervenants

Graeme Johnson est développeur confirmé chez IBM et travaille sur les machines virtuelles et les EDI. Il connaît particulièrement bien VisualAge (pour Smalltalk et pour Java), ainsi que J9 Virtual Machine, pour avoir participé aux projets.

Julian Dolby est chercheur pour IBM, il est spécialisé dans les techniques avancées d'analyse de programmes en vue d'améliorer leur qualité.

Présentation

L'idée de cette session était principalement d'étudier le fonctionnement de PHP en le comparant avec d'autres langages (notamment le C). Cela permet de détecter d'éventuels problèmes et surtout de proposer des améliorations.

En tant que développeurs utilisant PHP, nous sommes concernés simplement par l'aspect « avertissement » de cette session. Les détails, je le crains, ne nous concernent pas.

Cette session s'organisait en deux parties : « Analyzable PHP » puis « PHP runtime ».

Analyzable PHP

Ici, les points clefs sont la sécurité et les performances.

Côté sécurité, PHP lui-même n'est pas vraiment en cause puisque tout dépend de comment le développeur utilise les données d'entrée.

Côté performances, Julian Dolby a beaucoup fait la comparaison avec le langage C, dans lequel de nombreuses choses sont faites au moment du préprocesseur, donc avant la compilation et à plus forte raison avant l'exécution ; en comparaison, PHP a de nombreux aspects dynamiques : phpver(), inclusions dynamiques, etc. Selon lui, cela peut être un problème, car, en réalité, la version de PHP du serveur n'est pas dynamique : appeler une fonction pour déterminer cette valeur est une perte futile. De mon point de vue, cela simplifie grandement le procédé d'installation.

Cependant, il est certain que les packages d'installation de solutions comme phpBB pourraient définir une constante à l'aide de la fonction phpver() (plutôt que l'utiliser systématiquement). Ainsi, le numéro de version de PHP serait hardcoded dans la configuration, ce qui poserait moins de problèmes, tout en étant dynamique dans le sens où phpBB s'installerait correctement sur tous les serveurs. Globalement, tout ce qui n'est pas variable dans une page devrait être défini en tant que constante et tout ce qui ne change pas d'une exécution à l'autre devrait se trouver en tant que constantes (ne faisant pas appel à des fonctions) dans un fichier de configuration. PHP permet de le faire : je ne crois pas qu'il soit justifié d'avoir des macros comme dans le langage C.

Les includes dynamiques (dénoncés par Julian) sont, à mon humble avis, bien trop pratiques pour être évincées. Julian propose un troisième couple : include_static() et require_static()… L'idée a son mérite, mais je ne sais pas si cela serait très utile. Certaines choses doivent rester à la charge du développeur afin de ne pas trop compliquer le code, tout de même.

Le réel problème semble être dans les références. En effet, PHP permet de gérer toute variable comme appartenant à un scope global (au moyen du tableau $GLOBALS ou bien du mot clef global), ce qui pose évidemment un souci de constance : après avoir appelé une fonction, nous n'avons aucune assurance de ce que nos variables locales n'ont pas été modifiées. Il nous faut vivre avec cette crainte et coder en conséquence…

Pour conclure, les applications PHP ont énormément de chemin à faire pour être toutes bien écrites, ainsi que le prouvent des solutions comme Chorizo! Actuellement, elles utilisent trop le dynamisme offert par le langage PHP pour permettre une analyse fiable.

Cette analyse de PHP n'en est qu'à ses débuts. IBM poursuit sa quête…

PHP runtime

Dans certaines situations (compatibilité avec PHP 4), PHP ne peut pas savoir exactement ce que l'on attend de lui au niveau de l'affectation de mémoire.

Il est probable que PHP évolue vers une machine virtuelle (comme Java ou .NET) afin de proposer une compatibilité accrue.

L'une des tâches effectuées a été de recompiler PHP sans utiliser les headers de Zend. Pour cela, une approche « trial and error » a été adoptée : essayer de compiler, corriger les erreurs, essayer à nouveau, etc. Le résultat est un PHP avec un moteur « pluggable », c'est-à-dire que l'on peut brancher sur d'autres moteurs que le Zend Engine. L'intérêt est notamment de s'affranchir d'un moteur prédéfini, ce qui devrait donner davantage de flexibilité.

L'étape suivante est de reprendre le code source des extensions afin d'aller dans le même sens (avoir un moteur interchangeable). Le souci est que les extensions utilisent beaucoup le fonctionnement interne du Zend Engine.

Conclusion

Si j'ai bien suivi, car cela me semble extraordinaire, IBM a développé une branche de PHP utilisant une machine virtuelle et des extensions qui se sont affranchies des particularités du Zend Engine. Les avantages sont nombreux, notamment la possibilité d'utiliser les binaires d'un OS à l'autre ou encore de remplacer des fonctions lors de l'exécution (une seule extension le permet à ma connaissance, or elle ne fonctionne pas correctement d'après mes essais).

Julian et Graeme continuent à explorer ce domaine et encouragent toutes les personnes intéressées à les contacter, à partager leurs résultats, à informer leur entourage, etc. N'hésitez pas à les contacter pour davantage d'informations (les adresses sont à la fin du PDF).

9h00 : Filtering tainted data: PECL Input Filter vs. Zend_Filter

- Conférencier : Ben Ramsey ;

- Participants : 40 ;

- Thème : Sécurité ;

- Diaporamas : télécharger (miroir) ;

- Liens : blog de Ben, site officiel de Filter, tutoriel sur Zend_InputFilter.

L'intervenant

Ben Ramsey est ingénieur pour Art & Logic et co fondateur du PHP Security Consortium (ai-je déjà parlé ici de Chris Shiflett ?).

Présentation

La sécurité est un point crucial dans les développements sur Internet. Il existe très peu d'applications sécurisées, il n'y en a pour ainsi dire aucune. PHP a évolué au cours des versions, notamment en désactivant les variables autoglobales en PHP 4.

Ben Ramsey s'est penché sur les méthodes les plus intéressantes du marché : ext/filter (intégré à PHP) et Zend_Filter (du framework Zend).

J'utiliserai la technique proposée par Chris Shiflett permettant d'identifier les variables selon leur utilisation : le tableau $clean contient les variables filtrées.

Filter

Tout d'abord, ce n'est plus une extension PECL depuis PHP 5.2, dont la sortie officielle eut lieu le 2 novembre dernier. C'est maintenant intégré par défaut à PHP.

Malgré tout, Filter est encore expérimental : ses fonctions ne sont pas totalement stables. En particulier, les fonctions apparaissant dans la documentation officielle ne semblent pas correspondre avec les fonctions réelles.

login-filter.php

<?php

if(!empty($_POST))
{
$clean = array();
$clean['login'] = filter_input(INPUT_POST, 'login', FILTER_SANITIZE_STRING);
$clean['password'] = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);

echo 'Pseudonyme : '.$clean['login'].'<br/>';
echo 'Mot de passe : '.$clean['password'].'<br/><br/>';
}

?>

<form method="post">
Pseudonyme : <input type="text" name="login" /><br />
Mot de passe: <input type="text" name="password" /><br />
<input type="submit" value="Connect" />
</form>

Zend_Filter_Input

Pour commencer, Zend_InputFilter a changé de nom pour Zend_Filter_Input depuis la version 0.1.4 du framework (le 29 juin dernier). Le framework version 0.2.0 est disponible depuis le 31 octobre dernier.

login-zend.php

<?php

set_include_path('./ZendFramework-0.2.0/library/');

include 'Zend.php';

Zend::loadClass('Zend_Filter_Input');

if(!empty($_POST))
{
$clean = array();
$filterPost = new Zend_Filter_Input($_POST);

$clean['login'] = $filterPost->getAlnum('login');
$clean['password'] = $filterPost->getAlnum('password');

echo 'Pseudonyme : '.$clean['login'].'<br/>';
echo 'Mot de passe : '.$clean['password'].'<br/><br/>';
}

?>

<form method="post">
Pseudonyme : <input type="text" name="login" /><br />
Mot de passe: <input type="text" name="password" /><br />
<input type="submit" value="Connect" />
</form>

Conclusion

Les deux filtres ont des approches résolument différentes. Comme le souligne Ben dans sa présentation, ext/filter est un « opt-in », c'est-à-dire que le développeur choisit de l'utiliser ; en revanche, Zend_Filter est un « opt-out » qui contraint le développeur à utiliser des méthodes pour accéder aux propriétés de la classe.

Je suis partisan de l'approche de Zend_Filter_Input, mais je suppose qu'ext/filter peut être utilisé en « opt-out » si on l'implémente correctement.

Ce serait bien que les classes de Zend_Filter utilisent les fonctions d'ext/filter, cela permettrait d'avoir une méthode homogène et puissante de filtrer les données. Pour le moment, Ben a rencontré des problèmes avec les deux méthodes, ce qui suggère un manque de maturité. Filter est assez imbuvable à utiliser, mais il n'est pas impossible de l'encapsuler dans une classe.

12h00 : Keynote - How to combine PHP technology with Java based on enterprise systems

- Conférencier : Tim Bray ;

- Participants : 160 ;

- Thème : Problèmes dans les frameworks ;

- Diaporamas : télécharger (miroir) ;

- Liens : site de Tim Bray, conférence Paris on Rails.

L'intervenant

Tim Bray a un CV bien trop volumineux pour être décrit ici convenablement. Je me contenterai de rappeler qu'il a lancé l'un des premiers moteurs de recherche en 1995 et qu'il a co inventé XML 1.0. Aujourd'hui, il est (entre autres activités) directeur des technologies Web chez Sun Microsystems.

Présentation

Soit Tim Bray est un artiste de la flatterie, soit Sun fera davantage pour la communauté PHP à l'avenir. J'ai quand même du mal à croire à la seconde option…

Toujours est-il qu'il est revenu sur un ancien comportement de Sun : « Java is the answer… What was your question? ». Tim Bray ironisait à ce sujet, comme l'illustre la photographie comparative Java/PHP/Rails ci-dessus.

Tim Bray semblait considérer PHP et Java comme des frameworks de développement Web, au même titre que Ruby on Rails.

Performances

PHP 5 a des problèmes de performances. À la ZendCon 2006, tout le monde parlait de performances ; en revanche, à la conférence Ruby de la semaine précédente, personne ne semblait s'en préoccuper.

Les systèmes d'exploitation ont des temps d'accès très réduits à leurs fichiers. Lorsque c'est possible, il est bon d'utiliser des fichiers plutôt que des bases de données. Les ordinateurs ont fini de gagner en rapidité d'exécution des instructions, il faut donc recommencer à s'en préoccuper.

Il faut mesurer la rapidité, pas la deviner.

Vitesse de développement

Les avantages de PHP

- Pas de compilation manuelle ;

- Pas de déploiement ;

- Taille du code ;

- Processus de configuration (Rails est en avance là-dessus).

Outils de développement

Les outils qui font un bon langage :

- L'élément principal est l'EDI ;

- Capacité d'utiliser des gabarits (Java a plus de 75 langages de gabarits) ;

- Capacité à lier les objets et la base de données (object relational mapping, comme en Rails avec ActiveRecord) ;

- Documentation (davantage à voir avec l'aspect « culture » que technologie pure) ;

- Performances.

Maintenabilité

Ce qui fait que du code est maintenable :

- L'architecture MVC (ce n'est plus expérimental) ;

- Le modèle orienté objet ;

- Le nombre de langages (réutilisation des langages) ;

- La taille du code (plus il est petit, mieux c'est) ;

- La lisibilité (gros point positif pour Java, tandis que Perl est à la traîne) ;

En vrac

Voici les idées que j'ai notées en vrac :

- Il y a un problème d'identité sur Internet : chaque site demande de créer une nouvelle identité (login+password), mais il y a tout de même des tentatives pour y remédier (OpenID, Liberty Alliance, Passport.NET) ;

- La majorité des gens ne travaille pas uniquement avec PHP ;

- SOA (cf. la session sur SCA) ;

- Web : pas d'API, seulement des messages => la solution : REST (Google Calendar) ;

- WS* (WS star, cf. image ci-dessus) : une tentative d'interfacer tous les frameworks (.NET, PHP, etc.) ;

- Web 2.0 : Tim Bray a perdu patience, mais il y a de bonnes idées : flickr, YouTube, del.licio.us, LiveJournal.

Conclusion

Tim Bray a visiblement une très bonne vision d'ensemble du Web.

D'après lui, PHP est largement dans la course. Chose étrange, il a parlé de Microsoft, mais pas de .NET. Selon lui, les trois seules technologies intéressantes semblent être Java, PHP et Ruby on Rails, avec probablement une préférence pour le dernier.

Pour ma part, et comme l'a remarqué quelqu'un à la fin de la session, je pense qu'il méconnaît les outils à disposition des développeurs PHP : il y a d'excellents EDI pour PHP, certains ayant assurément de meilleures idées que ce qui est disponible pour Java. Je pense par exemple à l'aide constamment disponible avec PHPEdit. Par ailleurs, un plugin PHP est disponible pour Eclipse (=> PHP Eclipse), l'environnement phare pour le développement en Java.

13h00 : Maturing nicely - PHP-GTK 2

- Conférencier : Steph Fox ;

- Participants : ~10 ;

- Thème : Applications de bureau en PHP ;

- Liens : L'installeur Gnope.

L'intervenant

Steph Fox est principalement active sur divers sites de php.net et zend.com, ainsi que pour le projet PHP-GTK.

Présentation

Cette session eut lieu pendant la pause de midi, puisqu'elle n'a pas pu avoir lieu la veille à l'heure prévue. C'est dommage, car le nombre de participants a été divisé par trois à cause de cela.

PHP-GTK 2 est une extension permettant de développer des applications de bureau, c'est-à-dire qui s'exécutent dans l'espace utilisateur (Windows, Linux, MacOS, etc.) plutôt que sur le serveur (environnement Web classique). Cela permet de développer des scripts .php pouvant être exécutées sur n'importe quelle machine (pour peu de disposer de PHP-GTK 2), un peu à la manière des fichiers .class de Java.

Je trouve les scripts PHP-GTK 2 très similaires à des applets Java, tout en restant du PHP.

Installation

Le plus simple est vraiment d'utiliser Gnope. Téléchargez l'installeur, exécutez-le, laissez-le faire jusqu'au bout et vous aurez un PHP-GTK 2 prêt à utiliser.

Démonstration

Créez le script suivant (de la démo officielle de PHP-GTK 2), puis double cliquez dessus pour l'exécuter :

hello-world.phpw

<?php

$window = new GtkWindow();
$window->set_title('Hello world');
$window->connect_simple('destroy', array('gtk', 'main_quit'));

$lblHello = new GtkLabel("Just wanted to say\r\n'Hello world!'");
$window->add($lblHello);

$window->show_all();
Gtk::main();

?>

Cet exemple démontre parfaitement à quel point programmer en PHP-GTK 2 est différent de programmer en PHP pour le Web.

Il faut dire adieu à de nombreuses choses auxquelles nous sommes habitués, comme les sessions et les cookies qui n'ont aucun sens ici.

En revanche, de nouveaux concepts font leur apparition, comme les widgets (éléments visuels) et connecter un évènement à un widget (afin de faire en sorte que l'application réagisse aux actions de l'utilisateur). Ceux d'entre vous qui connaissent PHP::Ming y sont un peu habitués.

Nouveautés depuis PHP-GTK 1

PHP est passé de la version 4.x à 5.x et dispose maintenant d'un modèle objet bien plus mature. Par conséquent, quelques choses ont changé…

De même, GTK+ est passé en version 2, ce qui implique l'apparition de nouvelles classes et le passage d'autres en deprecated (utilisation déconseillée).

Retrouvez tout cela dans la documentation officielle.

Conclusion

Faisant elle-même partie de l'équipe de développeurs de PHP-GTK 2, Steph maîtrise évidemment le sujet. Cependant, j'ai eu l'impression qu'elle a eu moins de temps que ses collègues pour préparer son intervention : le PowerPoint était moins attrayant visuellement et nous avons débordé sur la session suivante (deadly sins) sans avoir pu couvrir tous les aspects prévus.

Toutefois, Steph n'est pas entièrement en cause, car les auditeurs étaient tous très intéressés et ils ont posé de nombreuses questions, ce qui a obligé Steph à faire diverses démonstrations chronophages.

Concernant PHP-GTK 2, il semble qu'une version bêta sera diffusée avant Noël. Le code fait actuellement environ 5600 lignes (plus les includes) et la majorité des fonctions ont été réécrites.

Pour le coup, PHP-GTK 2 est complètement hors de la portée de PHPT…

Si vous cherchez la séparation logique/présentation comme avec des templates, penchez-vous sur Glade. Si c'est l'internationalisation qui vous préoccupe, alors renseignez-vous sur Pango.

13h45 : Confession time - Deadly sins using MySQL and PHP

- Conférencier : Arjen Lentz ;

- Participants : ~70.

- Thème : Les bêtises des développeurs ;

- Liens : Le site de Jan Kneschke.

L'intervenant

Arjen Lentz est ingénieur de support et formateur pour MySQL AB.

Présentation

Cette session était la plus divertissante de toutes. À la fin de quatre jours de discussions sérieuses, cela fait du bien (même si, pour ma part, je n'étais là que pour deux jours).

Arjen maîtrise son sujet, depuis le temps qu'il présente cette session à diverses conférences. Le principe est de faire prendre conscience à l'audience des bêtises les plus courantes.

Malheureusement, il m'a été demandé de ne pas diffuser les diaporamas de la présentation. Cela se comprend, dans le sens où tout le code qui s'y trouve correspond à de mauvaises pratiques… Ainsi, je ne pourrai pas vous faire partager cette expérience comme je le fais pour les autres.

Conclusion

Je tiens à remercier Arjen pour le chocolat qu'il m'a attribué pour ma bonne réponse. Le sachet a survécu au voyage de retour et j'ai pu en profiter tranquillement, de retour chez moi. Succulent ;-)

C'était une session très instructive. Les participants ont vite compris qu'il s'agissait d'une session interactive (les chocolats sont un appât efficace…) et certains avaient de réelles compétences, j'en étais impressionné. Même Arjen était parfois dépassé, et il a été obligé de distribuer quelques chocolats pour avoir le droit de reprendre la parole…

15h30 : Integration und Migration zu AJAX

- Conférencier : Gerd Schaufelberger ;

- Participants : ~70 ;

- Thème : Web 2.0.

L'intervenant

Gerd Schaufelberger a développé la communauté my.nero.com et il travaille maintenant en freelance.

Présentation

C'était la seconde session en allemand à laquelle j'assistais. Je ne savais pas exactement à quoi m'attendre avant de m'asseoir…

Je n'ai malheureusement pas pu récupérer les diaporamas de la présentation, puisque je devais partir pour prendre l'avion.

Gerd parlait de trouver le juste milieu entre le Web 1.0 (une page complète pour chaque requête) et le Web 2.0 (à l'extrême, cela donne une page qui n'est jamais rechargée).

Quelques outils conseillés : PEAR::HTML_AJAX (JavaScript) et Prototype (PHP). Pourquoi ne pas mélanger les deux ?

Conclusion

C'était une session plutôt pour les nouveaux arrivants dans le monde d'AJAX. Je n'y ai pas trouvé d'idées novatrices, mais c'était certainement dû à mes compétences limitées dans la langue allemande.

IV - Conclusion générale

IV-A - Épilogue

C'était une très bonne conférence, composée de discours très intéressants et très bien choisis, puisqu'il y avait de l'interaction : Tim Bray parlait de SOA, Matthew Peters a mené toute une discussion à ce sujet ; deux sessions sur les tests en PHP permettaient aux auditeurs de comparer ce qui leur est proposé ; quatre sessions ont eu lieu à propos de la sécurité, et l'un des exposants présentait une solution de sécurité en PHP (cf. l'introduction).

L'équipe d'organisation de la conférence était très présente, tout était très bien préparé entre les sessions.

Les soirées étaient organisées (même avec un concert, le Blues Brothers Revival) de manière à ce que ceux qui venaient de très loin ne puissent pas s'ennuyer en fin de journée.

IV-B - Témoignage

J'ai passé toute la conférence en compagnie de Ralph Schaller, un entrepreneur allemand qui utilise PHP dans ses développements. Je lui ai demandé s'il pouvait me donner son avis sur la conférence, voici ce qu'il m'a répondu :

La Conférence Internationale PHP 2006 fut ma seconde conférence PHP. Comme l'année précédente, l'organisation était parfaite, tout comme l'hôtel de la conférence. Les orateurs étaient plutôt compétents et ils sont majoritairement des piliers de la communauté PHP ; la communauté voit également cette conférence comme un rassemblement, c'est pourquoi un grand nombre de gourous s'y rendent. Grâce à l'atmosphère chaleureuse, chacun peut discuter avec les autres membres de la communauté à tout moment, ce qui permet d'obtenir davantage d'informations cruciales sur PHP.

Il ne faut pas se laisser submerger par la quantité de sessions. En effet, toutes sortes de sujets concernant PHP sont abordés, même si cette année était focalisée autour des buzzwords « Web 2.0 », « Web Security » et « Web Services ».

De mon point de vue, il y a une notion intéressante : la perspective professionnelle de PHP devient chaque jour plus évidente. Par rapport à l'an passé, le nombre d'auditeurs professionnels a augmenté (de PME ainsi que de grandes entreprises). Cela donne suite à la position globale de PHP dans le monde de l'entreprise : d'une solution « rapide et bancale » vers une architecture « robuste, rapide et fiable ». Je parie que cet engouement des entreprises pour PHP continuera sa croissance.

À l'année prochaine !

Ralph

IV-C - Liens

Ressources utiles :

- Rubrique PHP ;

- Rubrique JavaScript ;

- Rubrique AJAX ;

- Rubrique XML.

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article

Retour à l'article