PHPPRO

PHP Professionnel pour les entreprises

"\r" : 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 »

Modèle PDF : où comment éviter de perdre son temps

Chez nombre de mes clients la "génération de PDF" est un vrai sujet / enjeux. Mais que veux-t-on vraiment générer ?

Lire la suite »

Entretien avec un développeur et un chef de projet

Voici le déroulé d'un entretien que j'ai animé en fin d'année dernière dans une petite entreprise qui fait du développement Symfony.
Mon objectif était de comprendre leurs pratiques (de développement), les outils qu'ils utilisent et surtout d'avoir leur ressenti sur leur niveau d'industrialisation et les problèmes qu'ils rencontrent.
Cet entretien téléphonique m'a permi de bien préparé la journée "marathon" d'industrialisation que j'ai effectuée chez eux le lendemain.

Lire la suite »

Le Mode Hébergé (ou Application Service Provider) : où comment changer le business model de votre client

J'ai récemment répondu à un appel d'offres concernant la conception et le développement d'une base de données centralisée sur des données géographiques, je livre ici quelques pensées et remarques liées à cette réponse

Lire la suite »

Complémentarité PHPUnderControl / Phing

Suite à une demande d'un internaute, j'explique la complémentarité entre PHPUnderControl et Phing

Lire la suite »

Les frameworks c'est bien, développer "en dehors" c'est mieux

J'explique mon point de vue sur les frameworks et sur une erreur (de mon point de vue) qui coute cher aux entreprises...

Lire la suite »

SimpleTest, installation via mon PEAR

Pour les besoins de l'AFUP, je dois me mettre un peu à SimpleTest (j'ai plus l'habitude sur PHPUnit). Je n'ai pas trouvé de channel PEAR (a priori) fournissant un package installable via PEAR de SimpleTest et fournissant l'outil en ligne de commande (comme peux le proposer PHPUnit ou d'autres outils). Je vous propose donc celui de mon cru...

Lire la suite »

Cloner une arborescence projet modèle

Vous créez souvent de nouveaux projets pour vous ou pour les autres ?
Vous réalisez souvent des tâches répétitives de "clonage" d'arborescence en changeant certains noms de fichiers ou contenu pour les contextualiser ?
Ce script certainement peut vous aider !

Lire la suite »

Capitaliser, Améliorer et Rationnaliser les développements PHP en interne

Je vous livre ici un document de travail anonymisé sur la présentation d'un outil que je développe pour un client pour cadrer les pratiques de développements, ainsi que les enjeux et la démarche à adopter en interne.

Lire la suite »

Utilisez PEAR pour gérer vos dépendances

PEAR (http://pear.php.net) est très mal connu dans les entreprises (en tout cas celle que je visite...).

Je ne vais pas vous décrire ici tous les fondements et usages de cet outil, cependant, au delà d'une "librairie" vieillotte, il s'agit d'un outil puissant qui vous donne le pouvoir de réutiliser votre code et de gérer vos dépendances.

Lire la suite »

Incompatibilité Phing 2.3.3 et PHPUnit 3.4.x+

Phing, le port de Ant (java) en PHP, propose des tasks (balises xml) permettant d'exécuter des classes PHPUnit (tests unitaires en PHP). La version stable de Phing n'est maintenant plus compatible avec la dernière version stable de PHPUnit (3.4.3 actuellement) voir avec la branche 3.4.x, et on obtient l'erreur :

[PHP Error] require_once(PHPUnit/Util/Log/XML.php): failed to open stream: No such file or directory [line 22 of C:\Program Files\PHP\PEAR\phing\tasks\ext\phpunit\phpunit3\XMLPHPUnit3ResultFormatter.php]

Voici une piste pour y remédier :

Lire la suite »

Session "Oui ! PHP est industriel !" au forum PHP 2009 @Paris

Le forum PHP 2009 de Paris s'est déroulé la semaine dernière, je vous livre le support de session que nous avons utilisé avec Damien Seguy à l'occasion de la présentation de notre session sur l'industrialisation en PHP.

Lire la suite »

- page 1 de 4

Thème original par N.Design Studio - Adapté par Pixials - Propulsé par Dotclear
Fil des billets Administration