PHPPRO

PHP Professionnel pour les entreprises

Aller au contenu | Aller au menu | Aller à la recherche

Introduction sur les Tests Unitaires - Support de Formation

Demain je donnerai une formation sous forme de Dojo sur le refactoring par les tests d'une application métier chez un de mes clients. Voici mon support de formation pour la première partie de la matinée sur le rappel théorique sur les tests unitaires.

Lire la suite...

Présentation Drupal au Bordeaux PUG le 22/09 à 19h

Dans le cadre d'une PHP User Group de Bordeaux que je co-organise, nous accueilleront Stéphane Jaulin le 22 septembre 2011 à 19h qui viendra nous parler de Drupal.

L'annonce sur le site du Bordeaux PUG

Fonctionnalité PM du jour : commencer à utiliser PM sur un projet existant

Vous travaillez déjà sur un projet de développement. Vous avez entendu parler (ou pas) d'un outil en ligne de commande qui s'appellerai PM et qui aurait certaines fonctionnalités obscures... Vous avez envie de le tester mais vous ne savez pas comment vous y prendre, ce billet est fait pour vous...

Lire la suite...

Compiler PHP 5.3.x sous linux

Pour les besoins d'un futur billet sur ce blog, je décris ici un exemple de méthode de compilation de PHP sous Linux Ubuntu 10.04 LTS (64 Bits). La méthode reste la même dans les grandes lignes sur l'ensemble des distributions modernes, vous aurez peut être à personnaliser quelques dépendances de paquets par ci par là.

Lire la suite...

PM : Développeurs, augmentez votre productivité !

Ce soir, lors de la première séance du PHP User Group Bordeaux, j'ai présenté mon nouvel outil en ligne de commande pour augmenter la productivité au quotidien : PM. Voici la slides de ma présentation, vos commentaires sont les bienvenus !

Lire la suite...

ARM : "Array Relational Mapping", où comment faire du lazy loading avec des arrays en PHP...

Considérez

$user = array('login' => 'ohoareau', 'company_id' => 12);

Imaginez que vous puissiez directement l'utiliser pour faire ça :

$login = $user['login'];
// récupères les données de l'entreprise en réalisant
// une jointure automatique
$companyName = $user['company']['name'];

Sans avoir besoin d'utiliser un "objet" (ou classe) User pour charger "à la demande" les jointures avec la table organization...

Lire la suite...

Le comportement attendu d'une méthode : où comment se servir des conventions de nommage plutôt que des commentaires

Quel comportement attendez-vous quand vous appellez setX() ? getX($id) ? checkX() ? isX() ? listX() ? Chaque préfixe de nom de méthode à son propre "comportement attendu", voici une proposition de comportements communément utilisés...

Lire la suite...

Au secours j'ai trop de log !

Et vous comment faites vous pour n'activer que certaines lignes de debug mais pas toutes dans vos applications ?

Lire la suite...

Conférence au Bordeaux PUG sur un nouvel outil d'industrialisation PHP le 13/04/11

Le 13 avril prochain je présenterai mon outil de "gestion de projet" pour développeur PHP (version beta, open source, under heavy development).

En fait, vous aurez reconnu un outil en ligne de commande qui est un mix entre zf.bat / sf.bat et maven (entre autres ;)).

Voici le teaser de la conférence pour ceux que ca intéresse : http://bordeauxpug.org/2011/03/20/session-du-13-avril/

Lire la suite...

Piste pour gérer les spécificités de plusieurs clients (versions) au sein d'une même application (version)

C'est naturel (enfin pour la majorité) : on commence toujours par développer "spécifique" :

  • écran et boutons d'actions spécifiques à notre client
  • règle de gestion et workflow spécifiques à notre client
  • messages d'erreurs et envoi d'emails spécifiques à notre client
  • ...

Puis notre produit / logiciel est un premier succès et un autre client nous le demande, puis un autre, ... Nous devons alors faire face à un problème sans forcément nous en rendre compte : Comment gérer plusieurs mode de fonctionnement (i.e. un fonctionnement pour chaque client) au sein de la même application ? Comment éviter de dupliquer / cloner l'application et maintenir N versions en parallèle ?

Lire la suite...

Autoloader de classes : comment prendre en compte les namespaces de PHP 5.3+

Pour ceux qui ne connaissent pas (encore), le mécanisme d'autoload en PHP permet (entre autres) d'inclure "à la demande" les fichier-classe. Classiquement en PHP, nous faisons :

require_once 'My/Service.php';

$o = new My_Service();

Le mécanisme d'autoload permet d'écrire uniquement :

$o = new My_Service();

...

Lire la suite...

" " : où comment afficher un compteur de lignes traités dans un batch, plutôt qu'un log volumineux

Vous avez un batch qui analysent des fichiers et qui affichent une ligne de log par fichier traités, voici une technique pour avoir un (fichier de) log moins volumineux

Lire la suite...

Batch : Attention à la mémoire vive

Le sujet des batch (en php) est assez récurrent dans le développement applicatif. On a souvent besoin de faire des scripts d'import, au hasard d'un catalogue de produits, par exemple.
Dans cette article je reviens sur une maladresse souvent implémentée dans les batchs et qui a un impact négatif sur les perfs et l'utilisation de la mémoire vive : le chargement de l'ensemble des données et l'utilisation du for(each).

Lire la suite...

Externaliser les messages d'erreurs des exceptions, pour les internationaliser, par exemple

Dans certains contexte, il est important de pouvoir fournir des messages d'erreurs dans différentes langues, par exemple en fonction de langue de l'utilisateur.
Parmi les sujets à mettre en oeuvre pour adresser ce point, les exceptions et leur messages sont à ne pas oublier, voici une technique que vous pouvez mettre en oeuvre.

Lire la suite...

Interface ArrayAccess : où des objets que l'on utilise comme des array

Cette semaine j'ai fait découvrir l'interface ArrayAccess à un des développeurs Parisiens que je coache.
Cette fonctionnalité lui a permis d'appréhender facilement les tests unitaires sur du code legacy, je reviens sur cette "expérience"

Lire la suite...

Comment maîtriser la montée de version d'un framework dont votre application dépend ?

Vous utilisez très certainement un ou plusieurs framework comme fondations de votre projet / application (Symfony, Zend Framework, CakePHP...). Une des premières évolutions majeures (d'un point de vue technique, mais pas fonctionnel) consiste en la montée de version des frameworks dont vous dépendez. ...

Lire la suite...

Magento demystified : global picture de la séquence d'exécution d'une requête Magento

Ces 6 derniers mois, j'ai fait pas mal de R&D autour du produit Magento.
Je ne vous livre pas ici mes convictions sur le produits, mais juste une cartographie globale de la séquence d'exécution d'une requête Magento.

Lire la suite...

Don't reinvent the wheel ... invent the car !

Vous avez déjà croisé des projets / équipes qui décident d'utiliser le dernier framework en vogue ? oui, certainement.
Par contre avez-vous déjà croisé des projets / équipes qui décident d'en changer (de framework) car ils se rendent compte que le choix n'est plus forcément pertinent ou le plus meilleur ? moi, non, pourtant c'est bien connu le la version parfaite d'un framework sur tous les sujets et ad vitam eternam n'existe pas...

Lire la suite...

Retour d'expérience sur les métriques qualité d'une application Symfony d'un de mes clients

En novembre dernier je suis intervenu chez un client pour améliorer les pratiques de développements sur une application basée sur Symfony.
A cette occasion j'ai réalisé un audit de l'application, voici quelques métriques à noter sur cette application (il ne s'agit ni d'une tendance ni d'une moyenne, je vous livre ici les métriques brutes pour que vous puissiez comparer).

Lire la suite...

Marathon de l'industrialisation : où comment outiller vos troupes en les motivant

Depuis quelques temps j'ai mis en place une activité spéciale que je propose à mes clients : Le Marathon de l'Industrialisation.
L'idée: focaliser toute l'équipe de développement au même moment sur un temps court, pour améliorer significativement les pratiques, et ce grâce à l'adoption de nouveaux (variable en fonction des clients) outils et techniques de développement. Je vous livre ici un de mes supports utilisé en Juin 2009 chez un de mes clients.

Lire la suite...

- page 1 de 5