jeudi, mars 31 2011, 23:14
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
dimanche, mars 20 2011, 22:26
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
Et vous comment faites vous pour n'activer que certaines lignes de debug mais pas toutes dans vos applications ?
Lire la suite...
aucun rétrolien
lundi, novembre 29 2010, 08:24
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
samedi, novembre 27 2010, 14:46
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
lundi, avril 26 2010, 00:10
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
mercredi, avril 14 2010, 23:53
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
mercredi, février 24 2010, 09:00
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
un rétrolien
vendredi, février 19 2010, 23:28
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
samedi, janvier 9 2010, 10:04
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
vendredi, août 7 2009, 08:50
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
mercredi, août 5 2009, 09:03
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
lundi, août 3 2009, 11:52
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
vendredi, juillet 24 2009, 18:15
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
vendredi, juin 5 2009, 19:02
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
samedi, mai 30 2009, 16:18
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
mardi, mai 12 2009, 13:44
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
samedi, avril 18 2009, 10:08
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
mardi, avril 14 2009, 09:26
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
Comment récupérer le répertoire courant du fichier dans lequel on se trouve ...
Lire la suite...
aucun rétrolien
samedi, avril 11 2009, 08:12
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien
samedi, avril 4 2009, 13:53
Par Olivier Hoareau - Trucs et astuces
- Lien permanent
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...
aucun rétrolien