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 »

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 »

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 »

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 »

subversion + fichier .ini + include_path = gestion dynamiques des dépendances (librairies,...)

Votre application utilise certainement le tout dernier framework dernier cri, ou encore LA librairie ultime pour faire du PDF ou de l'ODT en PHP.. Ou encore, votre application dépend d'une autre application que vous avez réalisé ou interne à votre entreprise, elle a besoin de certaines classes par exemple.

Voici une méthode (il en existe certainement plein d'autres !) vous permettant de gérer vos dépendances pour être sûr de travailler toujours sur la bonne version d'une librairie, et pas sur une version modifiée en local sur votre poste et qui serait différente de celle sur votre serveur de production !

Lire la suite »

Les fichiers de contextes : où comment utiliser la même appli sur le web, les tests unitaires, fonctionnels, la ligne de commande, ...

Votre application peut être exécutée via :

* un navigateur (web)
* une ligne de commande (batch)
* PHPUnit (tests unitaires ou tests d'intégration)
* GreenPepper / Fitnesse (tests fonctionnels)
* ...

Lire la suite »

include_path + conventions + autoload = chargement automatique des classes PHP

Vous avez des dizaines de require/include en début de chacun de vos script ?
Pire dans vos scripts PHP, un peu partout ?
Et si l'autoload vous changeait la vie !

Lire la suite »

DNS + Proxy + Header, où comment gérer le déplacement d'un site internet en douceur

Cela vous est probablement déjà arrivé de devoir déplacement un site internet sur un autre serveur. L'adresse IP du serveur n'étant plus la même, il faut alors modifier l'entrée DNS (souvent A, mais peut être CNAME) pour que le nom de domaine pointe maintenant sur l'adresse IP du nouveau serveur. Mais cela peut prendre du temps pour se propager...

Lire la suite »

Installer HUDSON sur Ubuntu 8.10 sur le port 80

Voici la procédure que j'ai déroulée pour installer l'outil d'intégration continue Hudson (v1.3.09) sur un serveur sous Ubuntu 8.10 (64 bits) complètement vierge.

Lire la suite »

Des valeurs par défaut ... qui cachent des bugs !

function mafunction($param1,$param2='yes') { ... }

Que se passe-t-il si vous faites cet appel :

mafunction("monparam1",null);

ou bien :

mafunction("monparam1",$value2);

avec $value2 = null ?

Lire la suite »

Installer son propre channel pear en local (par exemple chez un client...)

Un petit tutorial rapide pour vous faire un retour d'expérience sur l'installation de Chiara PEAR Server (aka un channel PEAR perso)

Lire la suite »

Générer un document OpenXML à partir d'un modèle (pptx, xlsx,docx) et de variables: où comment générer vos documents à la volée simplement

Vous avez produit pour un client un document powerpoint vraiment bien, avec l'entête de votre entreprise, votre logo... sur un sujet qui revient souvent pour vous.
Le temps passe, et voilà qu'on vous redemande le même sujet ou très similaire mais avec quelques informations différentes ou bien à actualiser.

Lire la suite »

dirname(__FILE__), où comment éviter d'utiliser define('ROOT',...);

Comment récupérer le répertoire courant du fichier dans lequel on se trouve ...

Lire la suite »

Le lien symbolique : ou comment maîtriser son déploiement

Vous avez déjà fait des mises en production ou mises en ligne.
Vous savez que les problèmes arrivent, que l'on peut faire des erreurs, par exemple supprimer malencontreusement un répertoire au moment du remplacement par la nouvelle version, etc...

Il existe une technique simple qui permet de simplifier les mises en production, de faciliter le retour en arrière et de gérer l'archivage : le lien symbolique.

Lire la suite »

Typer vos exceptions: les types d'exception génériques mais utiles

Si vous utilisez le mécanisme d'exception de PHP, vous devez savoir qu'il est possible de créer vos propres exceptions en héritant des classes Exception ou RuntimeException. (SPL), par exemple comme ceçi :

class MyException extends Exception
{
}

...

Lire la suite »

Charger un fichier de configuration à la demande sans changer l'url

Votre application est exécutée sur plusieurs environnements différents (dev, integration, preprod, prod, ...).
Vous avez bien fait les choses, les différences entre les environnements sont externalisées dans un fichier de configuration de sorte que le code (php) soit identique sur l'ensemble des environnements.
...

Lire la suite »

D'une application mono-marque à une application multi-marque : comment faire simple ?

Vous avez développé une application PHP complexe (ou pas).

Le succès de votre application auprès de votre client (interne ou externe) vous amène à devoir décliner votre application dans plusieurs versions : ...

Lire la suite »

SessionSwitcher : Ou comment accélerer vos tests IHMs manuels en 60 lignes de code

Vous avez développé une belle appli toute sympathique avec plein de jolis formulaires qui sont tellement bien faits, qu'ils vous rendent la vie moins sympathique lorsqu'il s'agit de tester "manuellement" votre application. ...

Lire la suite »

Tests unitaires et Exception : attention aux try/catch !

Les tests unitaires, pour ceux qui les utilisent, sont bien pratiques pour tester notre code. Malheureusement ils peuvent introduire, si ils sont rédigés de façon maladroite des problèmes qui peuvent être compliqués à comprendre a posteriori. Imaginons le code suivant (volontairement) mal codé : ...

Lire la suite »

- page 1 de 2

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