Tag cloud
motivation blog ASP.NET CakePHP php communauté Méthode filezilla conférences lithium behavior routes pense-bête stage open source débogage logiciel référencement ie6 MySQL astuce twitter cakefest css mvc web développement web scrum outils wordpress java migration loi pierre martin jsf xhtml framework productivité conception
-
Kalt


Cakefest #3 – Premier jour de conférences
Démystifier les services web en CakePHP – Joël Perras
La seconde intervention a été faite par Joël Perras, membre de la core team depuis le mois de Janvier 2009. Le but de cette présentation était de montrer qu’il était relativement simple d’interagir avec des services web depuis une application CakePHP.
Tout d’abord Joël a présenté ce qu’était un service web (une interface publique accessible à tous par le web) et les types d’information qui transitent lors d’appels distants (XML, JSon …). Lorsque vient le moment d’intégrer ce type d’interactions au sein d’une application CakePHP, il faut faire le bon choix d’implémentation.
La plupart du temps (l’exemple de Twitter a été pris) les développeurs ont développé des composants facilitant l’appel à des services web tiers … mais ce n’est pas la solution la plus propre et efficace ! En effet, il existe une fonctionnalité puissante dans CakePHP qui reste encore sous documentée mais qui mérite réellement qu’on s’y attarde un peu : ce sont les datasources. L’utilisation de datasources pour manipuler ces données permet d’intégrer le service web au niveau le plus bas de l’application, ce qui permet aux modèles d’être manipulés comme si ils étaient liés à une base de données : l’intégration est entièrement transparente ! Le lien logique entre ces différentes classes en CakePHP est :
Contrôleur -> Modèle -> DataSource -> [ MySQL | PostgreSQL | CouchDB | Services web... ]
Quelques exemples (assez impressionnant) de code ont été fournis, prouvant qu’en une dizaine de ligne il était possible de créer une datasource interfacée avec twitter (permettant donc de manipuler un service web de manière entièrement transparente). L’implémentation d’une datasource est très simple, il suffit d’implémenter (au besoin) les méthodes suivantes : __construct, listSources, describe, create, read, update, delete (et également l’attribut $_schema). Joël a mis en avant l’intérêt d’utiliser au maximum le code du coeur de Cake. Ainsi il ne sert à rien d’utiliser curl (PHP) alors que la classe HttpSocket (CakePHP) en est un wrapper élégant. De même au lieu d’hériter directement de DataSource vous pouvez hériter de DboSource si vous devez interagir avec des bases de données !
Enfin, il a donné un exemple pertinent montrant que les datasources ne sont pas toujours le meilleur moyen d’implémenter l’interaction avec un service web. L’utilisation du service web Google Chart relevant par exemple de l’affichage des données, mieux vaut dans ce cas implémenter l’interaction avec le service web au sein d’un helper.
Une conférence très intéressante présentée de manière concrète par un garçon en qui on peut amplement faire confiance, pensez donc un peu plus souvent aux datasources !