Qu’est-ce que REST ? (1/3)

REST (Representational State Transfer) est l’un de ces acronymes qui représente une non technologie comme peuvent l’être Ajax, DHTML, Web 2.0 et autres.

REST est un style d’architecture qui repose sur le protocole HTTP : On accède à une ressource (par son URI unique) pour procéder à diverses opérations (GET lecture / POST écriture / PUT modification / DELETE suppression), opérations supportées nativement par HTTP.

Dans cette série d’articles nous allons effectuer quelques rappels sur REST, écrire un client REST, puis écrire un serveur REST sans utiliser ni framework ni bibliothèque tierce, simplement en profitant des fonctionnalités natives du langage PHP.

Continuer la lecture

Le Design Pattern Registre (Registry) en PHP

Le Registre est un design pattern décrit dans l’excellent livre de Martin Fowler, Patterns of Enterprise Application Architecturecommunément désigné sous le terme PoEAA (Pas de traduction française).

La définition du registre est simple : c’est un objet « bien connu » qui permet aux autres de récupérer d’autres objets ou services.

Nous allons voir ici deux implémentations courantes du Registre en PHP.

Continuer la lecture

Opérateur $and dans MongoDB avec Doctrine ODM

Voilà quelques temps que j’utilise MongoDB en PHP par l’intermédiaire de Doctrine ODM.

Je passerais ici les multiples avantages de ces technologies pour me concentrer sur une limitation de la version actuelle de MongoDB (1.8) : l’absence de l’opérateur $and et la façon de le contourner.

Le problème est simple : Je dispose d’objets de type Element qui sont associés à un ou plusieurs Tags.
Je souhaite pouvoir effectuer une requête simple : Trouver tous les documents associés aux tags (1 ou 2) ET (3 ou 4). En l’état, MongoDB ne le permet pas.

Continuer la lecture

Design Pattern Observateurs / Observables Vs Publish / Subscribe en PHP

Les observateurs font parti des Modèles de Conception qui visent à limiter la dépendance entre les objets. L’objectif est de permettre à un ou plusieurs objets de réagir aux messages d’autres objets, sans qu’ils ne soient connus à l’avance, sans devoir les lier « en dur » dans le code.

Nous verrons également dans ce billet le concept de Publication / Abonnement (Publish / Subscribe), concept dont l’implémentation peut être menée à bien par un système d’Observateur / Observable, sans que cela signifie que ces deux appellations soient équivalentes (comme on pourrait le penser à tord en parcourant le web).

Continuer la lecture

Le Design Pattern patron de méthode (Template Method) en PHP

Dans cet article nous allons aborder une autre prose de la programmation objet : le modèle de conception « Patron de méthode » (Template method).

Ce pattern (fréquemment utilisé dans les classes abstraites) propose de développer un algorithme basé sur des primitives que l’on trouvera uniquement dans les classes filles.

Dans notre exemple nous allons développer un système de validation de données basique qui met en avant ce modèle.

Continuer la lecture