Category Archives: En pratique

Les codes (statuts) HTTP à connaître

En tant que développeurs web, nous fournissons des services au travers du web, et la plus part du temps au travers du protocole HTTP.

Dans les meilleurs des cas nous retournons un statut « 200 OK », indiquant que tout s’est bien passé, accompagné d’une page Web à l’attention de l’internaute. Malheureusement, il n’est pas toujours possible de répondre aussi favorablement à l’utilisateur et nous lui affichons alors des retours d’erreur… mais sans code HTTP pertinent correspondant.

Cet article à pour but de lister les codes HTTP indispensables (et non une liste exhaustive) que tout développeur web (PHP ou pas) devrait connaître… et encore plus lors du développement de services REST !

Lire la suite »

De l’usage des méthodes statiques

Suite à ma précédente introduction à Domain Driven Design, une critique négative sur l’usage des services statiques (en PHP ou non)a fait réagir un lecteur. Ce dernier soulève une question légitime : « en quoi l’usage des classes de services statiques est à éviter ? »

Un service statique ?

Tout d’abord, rappelons d’un point de vue technique ce que sont les méthodes statiques :

<?php
class ClassDeServiceStatique
{
    public static function unServiceStatique () 
    { 
        //L'usage de $this est prohibé
        //calculs ne nécessitant pas de contexte
        return "resultat";
    }
}

Une classe de service statique est une classe qui regroupe ses règles métiers dans une collection de méthodes exclusivement statiques (utilisant le mot clef static), donc qui n’utilise ni ne s’appuie sur une quelconque information de contexte (un état).

Lire la suite »

Programmation Orientée Aspect & PHP

L’AOP (Programmation Orientée Aspect) est un concept relativement répandu dans le monde Java ou deux acteurs majeurs proposent leur vision :

En PHP, jusqu’à ce jour, aucun projet n’a réellement vu le jour pour permettre aux développeurs de profiter de ce paradigme, si ce n’est peut être Flow 3 qui le propose à ses utilisateurs (mais cela implique l’utilisation de l’ensemble du framework), ou Symfony via un plugin dédié, qui présente les mêmes inconvénients.

Mais ça, c’était avant

Lire la suite »

Git, un modèle de branches efficace (2/2)

La gestion des branches dans Subversion ou CVS n’est pas suffisamment simple et rapide pour encourager les développeurs à s’y frotter, voire les en dissuade :

« Quoi ? Une branche ? Non, trop compliqué de gérer les conflits… on reste dans le trunk »

Partant de ce constat, tous les développeurs restent dans « le trunk », avec tous les inconvénients que cela peut avoir :

  • Mr X commit en deux parties son code, rendant l’espace de quelques instants l’intégralité du projet instable
  • Mr X commit une fonctionnalité en cours de développement, rendant le projet impossible à livrer tant qu’il n’aura pas terminé sa fonctionnalité
  • Mr Y commit lui aussi une fonctionnalité en cours de développement, rendant le projet encore moins possible à livrer tant qu’il n’aura pas terminé sa fonctionnalité.

Et nous nous retrouvons avec un trunk complètement instable ou un « hotfix » devient impossible à réaliser.

C’est là que Git intervient en proposant une gestion des branches simple et rapide.

Lire la suite »

Introduction à GIT (1/2)

Migrer de Subversion (ou CVS) vers Git ne se suffit pas en soi pour profiter de ce qui fait de Git… Git.

Git connait un succès grandissant pour de nombreuses raisons, dont :

  • La possibilité de travailler hors ligne
  • La possibilité de définir plusieurs dépôts distants
  • Github
  • L’extrême facilité et rapidité avec laquelle il est possible de gérer des branches
  • L’extrême facilité et rapidité avec laquelle il est possible de gérer des branches
  • Les deux derniers points
  • Surtout les trois derniers points

Après quelques rappels indispensables, nous allons nous concentrer sur le système de branches et proposer un modèle « prêt à l’emploi », largement inspiré de A successul Git branch model.

Lire la suite »