Archive

Articles taggués ‘php’

Classes proxy en PHP : l’AOP des pauvres

Introduction

Dans cet article, nous allons voir comment mettre en œuvre le design pattern Proxy en PHP pour faire par exemple de l’AOP. Nous ne couvrirons qu’une petite partie du vaste domaine qu’est la programmation par aspects, pour des raisons de simplicité et de longueur d’article.

Commençons par la classique citation Wikipedia :

La programmation orientée aspect (POA, en anglais aspect-oriented programming – AOP) est un paradigme de programmation qui permet de séparer les considérations techniques (aspect en anglais) des descriptions métier dans une application

L’utilisation de l’AOP permet ainsi de factoriser du code transverse tel que le logging des paramètres passés à une méthode, ou encore l’exécution d’une méthode au sein d’une transaction. On peut ainsi se concentrer sur le code métier dans la méthode.

Nous allons mettre en œuvre une implémentation basique d’AOP en PHP. Je sais, le domaine d’expertise d’Excilys est bien le Java ;). Lire la suite…

Share
Categories: Non classé Tags: , ,

Menez le web à la baguette avec symfony (3) : refonte des glasses

L’habit fait le moine

ours-pwn3d-glaceBienvenue dans le troisième épisode de la série “symfony, sex and fun”. Si vous arrivez en cours de route, vous pouvez consulter les articles précédents. Pour l’instant nous disposons d’un module bookmark fonctionnel (ajout, suppression etc.) mais qui n’est pas très joli. Voyons comment symfony permet de gérer les vues.

Note : à partir de maintenant, nous allons faire pas mal de modifications dans les fichiers. Je vous suggère de vous munir d’un bon éditeur PHP si vous souhaitez refaire la démarche chez vous. Pourquoi pas Netbeans et son très bon support de symfony, par exemple ?

L’affichage des vues dans symfony suit le design pattern decorator : chaque application dispose d’un layout global, dans lequel on va injecter le rendu du template de l’action appelée (il va venir le décorer). L’approche généralement utilisée dans d’autres projets suit le chemin inverse : on concatène un en-tête, puis le contenu, et enfin un pied de page, mais ni le header ni le footer ne représentent un document HTML valide.

Lire la suite…

Share

Open-source Flex development stack

Introduction

flexDans cet article, je vous propose de mettre en place un environnement de développement complet n’utilisant que des solutions Open Source (entièrement gratuit, donc totalement pas cher :)) pour faire du Flex. J’espère qu’il permettra aux personnes souhaitant démarrer un nouveau projet d’avoir une idée des différents outils existants, ainsi que de leur intégration dans un système d’informations déjà existant (au niveau du backend, notamment).

Les exemples qui vont être présentés dans la suite sont volontairement simplistes, le but n’est pas de faire la prochaine killer app, mais bien de voir comment mettre en place simplement et rapidement une “development stack” utilisant un frontend Flex et un backend Java ou PHP.

La plupart des technologies utilisées ici sont disponibles aussi bien sous Windows que Linux ou MacOS. Lire la suite…

Share

Menez le web à la baguette avec symfony (2) : un squelette pour pas chair

Résumé de l’épisode 1

Dans l’article précédent,  nous avons rapidement vu que des solutions intéressantes apparaissent au sein du monde PHP. Parmi l’un des nombreux frameworks émergeants, nous avons choisi d’étudier symfony à travers la création d’une application web de gestion de bookmarks, Plum. Nous avons pour l’instant créé une application par défaut. Il reste maintenant à lui faire faire son “vrai” travail…

Nous manipulons pour l’instant peu de types de données : les bookmarks et les tags. Voici un diagramme UML les représentant :

7bda79a8

Diagramme de classes de notre modèle

(Ce magnifique diagramme a été réalisé en ligne sur le site de yuml.me. Publicité gratuite :)).

Pour facilement manipuler les données en base, symfony gère de base deux Object-Relational Mappers (ORM) : Doctrine et Propel. Cependant, comme Doctrine est devenu l’ORM par défaut depuis la version 1.3 du framework, c’est lui que nous utiliserons. Doctrine propose une solution élégante d’accès aux données via le langage DQL, inspiré du HQL d’Hibernate, ainsi qu’une API d’accès aux données.  Propel se base de son côté sur une API semblable aux Criteria. Que l’on utilise Doctrine ou Propel, symfony fonctionne de manière semblable. Dans la suite de cet article, je vais détailler pas à pas les étapes suivantes :

  • configuration de l’accès à la BDD (hôte, port etc.),
  • définition du modèle de données dans un fichier au format YAMLconfig/doctrine/schema.yml,
  • appel de la commande responsable de la génération des classes du modèle, du code SQL, de la création de la BDD et chargement des données de test en BDD,
  • éventuelle génération de modules dans une application pour faire du CRUD basique,
  • adaptation du code et utilisation de l’API Doctrine… Lire la suite…
Share

Menez le web à la baguette avec symfony

Introduction

Chez Excilys, nous ne sommes pas sectaires. Bien que le groupe concentre son activité autour des technologies Java, bon nombre de collaborateurs s’intéressent à d’autres langages ou technologies. Après Android et Grails, je vais vous présenter le framework PHP symfony au travers d’une série d’articles dans lesquels nous construirons petit à petit une application web.

Commençons par un rapide aperçu de PHP.

elephpant

PHP: Hypertext Preprocessor est un langage de script créé par Rasmus Lerdorf en 1994. Bien que le langage soit majoritairement utilisé pour créer des sites/applications web (du fait qu’il propose beaucoup d’outils allant dans ce sens), il est tout à fait possible d’utiliser PHP pour créer des applications type script d’administration système, voire des applications graphiques (avec les bindings GTK par exemple).

Depuis ses débuts où il était écrit en Perl, PHP a évolué petit à petit pour devenir un langage objet (grosso modo depuis sa version 5), avec de nombreuses facilités telles que :

  • un accès très simple aux SGBD (MySQL, PostGreSQL…),
  • une manipulation de XML via DOM ou SimpleXML,
  • la possibilité de générer des images via GD,
  • de nombreuses autres API.

Durant de nombreuses années, PHP a été considéré comme un langage d’amateur, Lire la suite…

Share