Dur Comme Faire

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

Attention au contexte d'exécution des destructeurs

Lors d'un exercice en Licence Professionnelle Informatique Web Développeur à l'INSSET de Saint-Quentin, mes élèves ont constaté un comportement étrange avec le destructeur d'une classe. Voici un exemple minimal du problème :

<?php
class Exemple
{
	public function __destruct()
	{
		file_put_contents('log.txt', 'Test');
	}
}

$exemple = new Exemple();

Ce code ne pose a priori pas de problème et pourtant si vous l'exécutez avec Apache sur Unix vous risquez d'avoir des problèmes de droit d'écriture :

Warning: file_put_contents(log.txt) [function.file-put-contents]: failed to open stream: Permission denied in /var/www/test/destruct.php on line 6

En fait l'explication est aussi étonnante que simple et comme souvent on la trouve dans la documentation de PHP : lors de la phase de clôture d'un script, le contexte peut changer sur certains SAPI dont Apache.

Cela veux dire que notre instance étant détruite implicitement lors de la clôture du script, PHP ne va pas essayer de créer le fichier, dont le chemin est relatif, dans le même répertoire que le script mais dans un autre répertoire où il n'a pas forcément le droit d'écrire.

Pour contourner ce problème, il suffit soit de donner au fichier un chemin absolu pour le fichier, soit de détruire explicitement l'instance afin que cela se fasse avant la phase de clôture du script :

$exemple = null

ou

unset($exemple);

vendredi 11 décembre 2009 à 20h16 - PHP 7   0

Dossier spécial PHP dans le numéro de décembre de Programmez !

Le numéro de décembre du magazine Programmez ! contient un dossier spécial PHP avec des articles par mes collègues Christophe Villeneuve et Damien Seguy ainsi qu'un article par votre serviteur sur l'industrialisation des développements PHP.

lundi 7 décembre 2009 à 12h02 - PHP 0   0

Revue de presse PHP du 06/12/09

Comme chaque fin de semaine, voici la revue de presse hebdomadaire pour vous faire découvrir ce qui se dit d'intéressant sur PHP. Il s’agit d’articles en français ou en anglais que j’aimerais partager avec vous.

Et cette semaine, vous ne trouverez pas un mais deux articles bonus qui n'ont pas directement de rapport avec PHP mais qui me semblent importants.

  • PHP Header(), Beyond Redirect
    PHP est un langage de programmation taillé pour le web. Cependant, les fondements même du web, à savoir HTTP ne sont pas toujours bien connus des développeurs. Cet article montre des exemples pratiques d'utilisation de la fonction header() pour aller plus loin qu'une simple redirection.
  • PHP 5.3 : Migation depuis PHP 5.2
    La nouvelle version mineure/majeure de PHP est sortie depuis maintenant un peu plus de trois mois. Comme toujours avec PHP, il n'y a globalement pas de modifications à faire dans le code de vos applications pour les faire tourner sur PHP 5.3.
    Je dis "globalement" car il arrive bien sûr que nos applications soient impactées par certains changements mineurs. Cet article les répertorie pour que la transition se fasse en douceur.
  • Refactoring PHP Code
    La refactorisation est l'un des outils clés à la disposition des développeurs. Elle consiste a réorganiser son code afin qu'il soit plus optimisé d'un point de vue performances et maintenabilité.
    Roy Ganor montre ici à l'aide d'exemples comment refactoriser du code PHP.
  • Distributing PHP processing with Gearman
    Gearman est un framework permettant le traitement distribué de tâches entre processus d'une même machine ou de machines différentes dans un cluster. Il permet notamment la parallélisation de traitements gourmands ou nombreux.
    Il est possible de lancer des traitements PHP avec Gearman comme l'explique en détail cet article.

Et voici les articles bonus de la semaine :

  • Comprehensible Code
    Programmer va bien au-delà de l'empilage mécanique de lignes de code. En plus d'être fonctionnel, le code doit être maintenable et donc pour cela il doit être facilement compréhensible par d'autres développeurs.
    Paul Jones, le créateur du framework Solar, rappelle quelques principes que l'on perd parfois de vue dans l'urgence du quotidien.
  • One Step at a Time
    On pense souvent que l'idéal est un rêve inaccessible. Le découragement devant l'ampleur de la tâche à accomplir nous fait souvent renoncer. Lorna Mitchell propose de combattre ce problème en avançant par petits pas atteignables tout en gardant l'objectif en ligne de mire.

dimanche 6 décembre 2009 à 17h14 - PHP 0   0

Revue de presse PHP du 10/11/09

Comme chaque semaine, voici la revue de presse hebdomadaire pour vous faire découvrir ce qui se dit d'intéressant sur PHP. Il s’agit d’articles en français ou en anglais que j’aimerais partager avec vous.

Et parce qu'il n'y a pas que PHP au monde, vous trouverez également un article important mais dans un domaine libre et n'ayant pas forcément de rapport avec PHP.

  • PHP Concepts: The Difference Between Functions & Language Constructs
    Samuel Folkes explique la différence subtile qui existe entre fonctions et constructions de langage.
  • WDependency
    WDependency est un outil en ligne de commande, développé par Olivier Hoareau, qui analyse une application PHP afin de déterminer les dépendences entre les différents éléments qui la composent. Une fois l'analyse faite, il est possible de l'exporter sous forme d'image ou de tableau PHP pour exploiter ces données ailleurs.
  • Exceptional PHP: Introduction to Exceptions
    Brandon Savage nous gratifie une fois de plus d'un excellent article. Il s'attaque cette fois aux exceptions, cette fonctionnalité introduite dans la version 5 de PHP et dont l'usage peine à être généralisé.
  • Refactoring PHP Code
    Voici une courte introduction au remaniement de code en PHP. Cette pratique consiste à simplifier et remodeler son code en vue de l'améliorer.
  • PHP 5.3 sous Windows, plus de nouveautés qu’on le croit!
    Romain Bourdon, un collègue mais surtout le créateur de Wamp Server revient sur aspect passé inaperçu de PHP 5.3 : l'amélioration significative de son support de Windows. Longtemps délaissée, la version pour ce système d'exploitation était très en retard en terme de qualité et d'industrialisation du processus de publication.

Et voici l'article bonus de la semaine :

Josianne et Robert sont dans un projet
Le blog d'Octo nous narre l'histoire de Josianne et Robert qui travaillent sur le même projet. Josianne est une analyste expérimentée et connaît bien la boutique. Robert connait bien l’environnement technique. Nous allons voir comment certaines méthodes de gestion même avec les bonnes personnes peuvent mener à des conflits et des échecs.

mardi 10 novembre 2009 à 21h11 - PHP 3   0

Ubuntu Karmic et PHP sont dans un bateau...

... et ça ne se passe visiblement pas très bien. Après les problèmes avec Zend Server et Zend Studio, voilà maintenant que c'est PHP et par ricochet PEAR qui ont des problèmes avec la dernière version d'Ubuntu.

Le problème vient de la librarie zlib. Certaines de ses fonctionnalités ne sont plus disponibles dans PHP ce qui provoque l'échec silencieux du package PEAR Archive_Tar, empêchant toute installation de package PEAR.

Heureusement, il existe un contournement. Il suffit d'ajouter l'argument "-Z" afin de demander l'installation de packages non compressés :

pear install -Z phpdocumentor

lundi 9 novembre 2009 à 13h02 - PHP 4   0

Revue de presse PHP du 02/11/09

Après une longue pause estivale (et un peu plus), voici le retour de la revue de presse hebdomadaire.

Le but est de vous faire découvrir ce qui se dit d'intéressant sur PHP. Il s’agit d’articles en français ou en anglais que j’aimerais partager avec vous. Et parce qu'il n'y a pas que PHP au monde, vous trouverez également un article important mais dans un domaine libre et n'ayant pas forcément de rapport avec PHP.

  • How to Create Totally Secure Cookies
    Sécuriser les cookies, et donc souvent par rebond les sessions, est essentiel mais encore faut-il bien comprendre les mécanismes mis en jeu.
    Le site Carsonified explique comment fonctionnent les cookies puis propose quelques moyens de sécuriser leur usage :
    • Limiter l'accès au cookie au strict minimum ;
    • Bien choisir les informations à y stocker ;
    • Protéger le cookie des XSS.
  • Symfony expliqué à ma maman
    Cette série de billets vise à expliquer à un néophyte ce qu'est le framework Symfony les rappels généraux s'appliquent à la plupart des frameworks PHP.
  • Why will Symfony 2.0 finally use PHP 5.3?
    Fabien Potencier, le créateur du framework Symfony, explique pourquoi après mûre réflexion la version 2.0 de ce framework nécessitera PHP 5.3.
    Ce choix est en phase avec ceux de Zend Framework et CakePHP et les éléments de sa réflexion font probablement écho aux interrogations de nombreux architectes PHP.
  • Avoiding Notices: When to Use isset() and empty()
    Si l'ont n'y prend pas garde, l'évaluation de conditions provoque parfois des notices. Pour éviter cela, il est recommandé d'utiliser les fonctions isset() ou empty(). Bien que souvent équivalentes, leur usage varie sensiblement et il est bon de bien comprendre leur fonctionnement pour les utiliser à bon escient.
  • Five Tips To Make Good Object-Oriented Code Better
    Si utiliser la programmation orientée objet est une bonne chose, bien l'utiliser est encore mieux. Brandon Savage nous propose cinq moyens d'améliorer son code avec au programme :
    • Utiliser beaucoup d'objets ;
    • Utiliser des interfaces pour rendre les API prévisibles ;
    • Utiliser l'injection de dépendance ;
    • Préférer la composition à l'héritage ;
    • Créer des classes faiblement couplées.

Et voici l'article bonus de la semaine :

Fake Rocks, Salami Commanders, and Just Enough to Start
On a probablement tous vécu un jour le syndrome de la feuille blanche. Cette peur de se lancer qui nous pousse souvent à choisir la facilité et à remettre au lendemain.
Lutter contre la procrastination, puisque c'est le nom de ce comportement, n'est pas facile et il n'y a pas de remède miracle. Cependant, un peu de méthode et beaucoup de courage peuvent en venir à bout.

lundi 2 novembre 2009 à 00h06 - PHP 1   0

Zend Studio et Ubuntu Karmic

Décidément la nouvelle mouture d'Ubuntu pose des problèmes aux produits Zend. Après Zend Server qui refuse de s'installer, voici que certains boutons sont inopérants dans la dernière version de Zend Studio.

Il existe là encore un contournement en attendant la correction du bug de GTK à l'origine du problème. Pour cela, il suffit de créer un script contenant les lignes suivantes et de l'utiliser pour lancer Zend Studio :

#!/bin/bash
export GDK_NATIVE_WINDOWS=1
<CHEMIN>/ZendStudio

Remplacez <CHEMIN> par le chemin vers votre exécutable Zend Studio et le tour est joué.

dimanche 1 novembre 2009 à 16h37 - PHP 3   0

Installation de Zend Server sur Ubuntu Karmic

Karmic, la nouvelle version d'Ubuntu est sortie comme prévu jeudi dernier. En essayant d'installer Zend Server dessus, j'ai eu la désagréable surprise de constater qu'un paquet nécessaire, "libkrb53", n'est plus disponible sur celle-ci.

Voici le genre de message d'erreur que l'on obtient :

The following packages have unmet dependencies:
  php-imap-zend-ce: Depends: libkrb53 (>= 1.4.2) but it is not installable
E: Broken packages

En fait, ce paquet a été séparé en plusieurs nouveaux paquets : libkrb5-3, libgssapi-krb5-2, libk5crypto3 et libkrb5support0. En attendant qu'Ubuntu ou Zend corrige ce problème, il est possible de le contourner en créant soit-même un paquet transitionnel faisant office d'alias pour ces nouveaux paquets.

  • Passer en root : sudo -i
  • Créer le fichier libkrb53_fake.txt et y ajouter les lignes suivantes :
Package: libkrb53
Version: 1.6.dfsg.2+fake1
Depends: libkrb5-3, libgssapi-krb5-2, libk5crypto3, libkrb5support0
  • Construire le paquet : equivs-build libkrb53_fake.txt (Il vous faudra peut-être installer le paquet "equivs" pour cela)
  • Installer le paquet créé : dpkg -i libkrb53_1.6.dfsg.2+fake1_all.deb

Il ne vous reste plus qu'à relancer l'installation de Zend Server.

samedi 31 octobre 2009 à 17h30 - PHP 1   0

Annonce de l'agenda du Forum PHP 2009

Le programme du Forum PHP 2009 a été annoncé il y a quelques mais sans les horaires. Cet oubli est à présent réparé. L'agenda du forum est disponible sur le site de l'AFUP.

J'y serai et vous, y serez vous ?

samedi 3 octobre 2009 à 16h23 - PHP 3   0

Livre blanc "Industrialisation PHP"

Après quelques jours d'efforts pour tout boucler, Alter Way vient de publier le premier livre blanc sur l'industrialisation des développements PHP. Ce livre blanc a été écrit par Damien Seguy, figure du monde PHP, et moi-même.

En près de 15 ans, PHP a conquis la plupart des entreprises. Au début utilisé pour des projets annexes, il est aujourd'hui au cœur du SI. Les projets se complexifient, les délais se raccourcissent : il est temps d'industrialiser les processus de développement.

Ce Livre Blanc dresse un état de l'art des outils et méthodes qui permettent aujourd'hui d'industrialiser ses développements PHP.

Voici le sommaire complet :

  • 1 Introduction
  • 2 Maîtriser le cycle de vie d'un projet PHP
  • 3 Pratiques actuelles
    • 3.1 Faire faire un audit par un expert
    • 3.2 Formation des équipes
    • 3.3 Employer une convention de programmation
    • 3.4 Utiliser un dépôt de code
    • 3.5 Utiliser un framework
    • 3.6 Adopter un IDE de développement
  • 4 Outils et méthodes avancées
    • 4.1 Tests d'application Web
    • 4.2 Intégration continue
    • 4.3 Déploiement automatique
    • 4.4 Analyse statique
    • 4.5 Outils de conception
    • 4.6 Méthodes de programmation
    • 4.7 Maîtrise de la qualité du code
    • 4.8 Implication des utilisateurs
  • 5 Une nouvelle frontière
    • 5.1 PHP n'a pas encore exprimé son identité
    • 5.2 PHP n'exploite pas encore ses capacités de collaboration
    • 5.3 Des idées à explorer
    • 5.4 La communauté est un atout majeur
    • 5.5 Les développeurs vont gagner en discipline
  • 6 Bibliographie
  • 7 Licence et diffusion
    • 7.1 OpenContent License (OPL)
    • 7.2 Diffusion

Pour le télécharger, il suffit de vous rendre sur le site Alter Way.

Enfin ce livre blanc est diffusé sous licence OpenContent. Nous vous encourageons donc à le diffuser le plus possible pour porter la bonne parole dans tout le monde PHP voire au delà !

jeudi 1 octobre 2009 à 10h15 - PHP 7   0

Le programme du Forum PHP 2009 est annoncé

L'édition 2009 du Forum PHP se tiendra les 12 et 13 novembre à la Cité des sciences de la Villette, à Paris.

Le programme vient d'être dévoilé et il fait la part belle au duo PHP / MySQL. Cet évènement sera d'ailleurs organisé en collaboration avec Le MUG, l’association francophone des utilisateurs de MySQL.

Voici quelques conférences qui ont particulièrement retenu mon attention :

  • Oui ! PHP est industriel ! (Damien Seguy et Olivier Hoareau)
  • Flex et PHP (Michael Chaize)
  • Au secours, ma base de données fait ramer mon application ! (Stéphane Combaudon)
  • Optimisation des performances Magento avec Zend Server (Alban Hanry, Philippe Humeau)
  • Apache pour le développeur PHP (Julien Pauli)
  • MariaDB, the future of MySQL (Michael Widenius)

jeudi 24 septembre 2009 à 21h31 - PHP 3   0

Gestion du code mort

Olivier Hoareau évoque dans son dernier billet la gestion du code mort. C'est un sujet très intéressant car il montre que dans un domaine technique comme le développement, certaines notions très humaines et donc irrationnelles ont parfois une grande importance.

Il y a effectivement un attachement quasi affectif du développeur à son code. Une fois le code écrit on cherche souvent à toute force à lui trouver une utilité.

Comme Olivier, je pense qu'il faut savoir "jeter" son code s'il n'est plus pertinent. J'utilise des guillemets car un code conçu reste souvent en mémoire même s'il n'est finalement pas utilisé. Par ailleurs, si le code est suffisamment bon, bien qu'inadapté à la situation, on prendra soin de le stocker quelque part en vue d'une autre utilisation.

Pour résumer, je pense qu'il ne faut pas confondre dépôt et galerie de code. Le premier est dédié à une application précise tandis que le second est un recueil de morceaux de code dont on pense qu'ils seront probablement utiles plus tard mais sans en connaître l'usage que l'on en fera.

lundi 14 septembre 2009 à 19h14 - PHP 3   0

Zend Server : Permettre l'accès à distance à phpMyAdmin

Je teste Zend Server depuis quelques semaines. Mes premières impressions sont plutôt bonnes mais il y a une chose qui me dérange. Il est possible d'installer phpMyAdmin afin d'administrer des bases de données MySQL mais l'accès à cet outil ne peut se faire que depuis la machine locale. Cela pose donc problème si on utilise Zend Server sur autre chose qu'un poste de développement.

Heureusement, il est très facile de désactiver cet excès de zèle. Pour cela, il suffit d'éditer le fichier /usr/local/zend/gui/lighttpd/etc/lighttpd.conf et de commenter les lignes suivantes :

$HTTP"remoteip" !~ "127.0.0.1" {
    $HTTP"url" =~ "^/phpmyadmin/" {
        url.access-deny = ( "" )
        server.errorfile-prefix = "//usr/local/zend/gui/lighttpd/share/lighttpd-custom-errors/errorcode-"
    }
}

Il faut ensuite redémarrer Lighttpd afin que la modification soit prise en compte :

# zendctl.sh stop-lighttpd
# zendctl.sh start-lighttpd

Et voilà, le tour est joué.

dimanche 13 septembre 2009 à 17h36 - PHP 0   0

Parsing de l'analyse syntaxique de fichiers PHP

Afin d'améliorer les méthodes de développement dans la société pour laquelle je travaille, j'ai mis en place un hook Subversion de type "pre-commit" pour vérifier que la syntaxe PHP des fichiers que l'on souhaite commiter est correcte. Je ne parle pas là de respect de standards de codage, juste du respect de la syntaxe PHP. Cela peut paraître inutile mais je retrouve régulièrement des fichiers avec des erreurs de syntaxes.

L'idée est simplement de récupérer la liste des fichiers impactés par le commit en cours et pour chacun d'en vérifier la syntaxe à l'aide de PHP en ligne de commande. J'ai cependant été confronté à une subtilité dont je voudrais vous faire part.

Voici le code complet du hook en question :

#!/usr/bin/php
<?php
$repositoryPath = $_SERVER['argv'][1];
$transaction     = $_SERVER['argv'][2];
$stderr            = fopen('php://stderr', 'w');

(..)
// autres vérifications
(...)

// Checks PHP files for syntax errors
$command = "/usr/bin/svnlook changed -t $transaction $repositoryPath";
exec($command, $lines);

$errorsFound  = false;
$syntaxErrors = '';
foreach ($lines as $line) {
        $file = trim(substr($line, 4));
        if ('.php' == substr($line, -4)) {
                // KLUDGE: PHP returns found syntax errors through stderr so "2>&1" must be added to redirect stderr to stdout
                $command = "/usr/bin/svnlook cat -t '$transaction' '$repositoryPath' '$file' | /usr/bin/php -l 2>&1";
                exec($command, $output, $returnValue);
                if (0 != $returnValue) {
                        $errorsFound   = true;
                        $syntaxErrors .= 'Fichier: ' . $file . PHP_EOL;

                        array_pop($output);
                        foreach ($output as $line) {
                                $position      = strpos($line, ':');
                                $line          = substr($line, $position + 1);
                                $syntaxErrors .= ' - ' . trim($line) . PHP_EOL;
                        }
                        $syntaxErrors .= PHP_EOL .  str_repeat('-', 80) . PHP_EOL;
        }
}
if ($errorsFound) {
        fputs($stderr, str_repeat('-', 80) . PHP_EOL);
        fputs($stderr, 'Des erreurs de syntaxe PHP on ete detectes :' . PHP_EOL . PHP_EOL);
        fputs($stderr, $syntaxErrors);
        fclose($stderr);
        exit(1);
}

fclose($stderr);
exit(0);

La ligne qui nous intéresse principalement est la suivante :

$command = "/usr/bin/svnlook cat -t '$transaction' '$repositoryPath' '$file' | /usr/bin/php -l 2>&1";

La première partie, à gauche du pipe, demande à Subversion d'afficher le contenu du fichier $file du dépôt situé à $repositoryPath et cela pour la transaction $transaction. On parle ici de transaction et non de révision parce que nous sommes avant le commit. Enfin, la partie après le pipe reçoit le contenu du fichier renvoyé par Subversion et l'analyse syntaxiquement.

Je souhaitais afficher des informations sur les erreurs éventuellement rencontrées afin que le développeur sache exactement pourquoi son commit a été rejeté. Le problème est que PHP m'affichait bien les détails quand je capturais la sortie écran avec de l'output buffering mais je ne les avais pas dans la variable sensée contenir la sortie écran.

La raison est en fait toute bête mais on peut y passer un peu de temps avant de trouver si on n'a pas l'habitude du shell. Nous allons donc faire un petit rappel sur le sujet.

Sur Unix, il existe des flux standards. Ce sont des canaux pour l'entrée et la sortie de données. Ces flux sont au nombre de trois, au travers desquels les programmes peuvent faire entrer ou sortir des informations. Ceux qui nous intéressent en l'occurrence sont "stdout" et "stderr". Le premier correspond à la sortie classique tandis que le second correspond aux messages d'erreur.

Revenons maintenant à PHP. La fonction exec() permet de récupérer la sortie dans une variable. Le problème c'est que c'est le flux "stdout" qui est renvoyé et non l'ensemble de l'affichage. Les messages envoyés à "stderr" n'y figurent donc pas, ce qui explique le problème que je rencontrais.

Heureusement, il est possible de rediriger les messages du flux "stderr" vers "stdout" en ajoutant "2>&1" après la commande. Dès lors, la fonction exec() renvoie bien ce que j'attends et je peux afficher les messages d'erreur au développeur.

mercredi 19 août 2009 à 19h31 - PHP 5   0

Revue de presse PHP du 06/07/09

Comme chaque semaine, voici la revue de presse hebdomadaire pour vous faire découvrir ce qui se dit d'intéressant sur PHP. Il s’agit d’articles en français ou en anglais que j’aimerais partager avec vous.

Et parce qu'il n'y a pas que PHP au monde, vous trouverez également un article important mais dans un domaine libre et n'ayant pas forcément de rapport avec PHP.

Cette semaine, pour faire honneur à la sortie récente de la version 5.3 de PHP, 3 articles traitent de ce sujet.

  • PHP 5.3 : Nouveautés : Introduction et Sommaire
    La version 5.3 de PHP est sortie mardi 30 juin. Je ne vais pas vous lister l'ensemble des nouveautés mais plutôt vous envoyer vers cette excellente série d'articles publiée par Pascal Martin à l'automne dernier.
  • eZ Publish performance with PHP 5.3.0
    En plus des nombreuses nouveautés fonctionnelles, PHP 5.3 apporte de gros gains de performances. Des benchmarks effectués avec eZ Publish montre des gains de performances de 30% sous Windows et 20% sous Linux.
  • PHP 5.3 from a development manager's perspective
    La vision d'un chef de projet sur l'arrivée de PHP 5.3.
  • A Basic Lesson in Password Hashing
    Stocker des mots de passe de manière sécurisée est un élément primordial pour la sécurité d'une application web. Il existe différentes stratégies dont certaines assez astucieuses pour y arriver.
  • 10 Signs of Crappy PHP Software
    Une liste de symptômes très courants indiquant la mauvaise qualité d'un code PHP. L'étude rapide d'une application PHP à la recherche de ces indices permet de se faire une idée assez précise de sa qualité.

Et voici l'article bonus de la semaine :

Le mythe des 24Mb/s
Les publicité des fournisseurs d'accès à internet font la course aux débits les plus fous. Eric Daspet démontre ici que les débits réels moyens sont bien loin des chiffres avancés. Il est important de garder cela en tête pour optimiser les performances de nos applications web.

lundi 6 juillet 2009 à 16h25 - PHP 0   0

Sortie de PHP 5.3

La version 5.3 de PHP vient de sortir. Il s'agit d'une évolution majeure de la branche 5 de PHP. J'utilise sciemment le terme "majeur" pour une sortie dite mineure car la liste des modifications et améliorations est très importante comme l'a longuement et très bien expliqué Pascal Martin dans une série de billets.

Parmi toutes ces nouveautés, j'ai particulièrement apprécié les améliorations de la SPL et notamment les nouvelles classes comme splStack, splQueue, splPriorityQueue et splHeap.

La présentation suivante montre des exemples d'utilisation de ces nouvelles classes ainsi que des comparatifs de performances par rapport aux structures classiques de PHP.

PS: Saurez-vous trouver le gérant de No Parking caché dans cette présentation ? ;)

mardi 30 juin 2009 à 19h38 - PHP 1   0

Dernière ligne droite avant les PHP Days

La première édition des PHP Days se déroulera lundi et mardi prochain. Ce cycle de formation a pour thème "Industrialisez votre PHP !" et vous permettront d'acquérir les compétences nécessaires à une utilisation professionnelle de PHP.

Au programmes 4 formations dispensées par les meilleurs experts PHP français :

Jour 1 - matinée : Environnement et procédures de développement

La première matinée permettra a tous les participants de mettre en place un environnement de travail complet, cohérent et optimisé (IDE, débogueur, normes, procédures, ...).

  • Panorama des IDE PHP, choix commenté et installation d'une solution
  • Les normes de développement.
  • Le travail en équipe avec svn. Mise en situation et utilisation de svn dans les principaux cas de figures rencontrés en production.
  • Présentation des bonnes pratiques dev / pré-prod / prod

Animé par moi-même

Jour 1 - après midi : Utilisation d'un framework

Une fois votre environnement de travail mis en place direction les frameworks au travers d'une découverte pratique du Zend Framework. En une heure pour chaque nous mettrons en place une petite application de façon tutorée.

  • Avantages et inconvénients d'un framework ?
  • Présentation pratique du Zend Framework
  • Les autres frameworks

Animé par Julien PAULI

Jour 2 - matin : Sécurité de vos développements

Une application PHP sera lancée dans l'arène, et ce sera a vous de l'analyser et de tenter toutes les manœuvres retorses que vous connaissez pour en prendre le contrôle. L'atelier passera en revue a la fois les techniques d'attaques externes (boite noire, scanners, fuzzing), et interne (audit de code) pour illustrer les risques et exploitations de différentes vulnérabilités.

  • Bonnes pratiques de sécurité PHP
  • Présentation des différentes attaques et leurs parades (XSS, Upload de fichiers, Session et cookies, CSRF, Attaques par injection SQL)

Animé par Damien SEGUY

Jour 2 - après midi : Optimisez vos performances

Cette conférence permettra de trouver des réponses a l'optimisation de PHP: éaluer un site existant, mettre en place une architecture scalable et optimale, optimiser les performances (configuration logicielle, cache, compilation, bases de données).

  • bonnes pratiques de développement
  • la configuration de PHP
  • performances côté serveur

Animé par Cyril PIERRE de GEYER et Julien PAULI

lundi 29 juin 2009 à 18h07 - PHP 0   0

Sondage concernant la revue de presse PHP

Cela fait plusieurs fois que faute de temps, je décale la publication de ma revue de presse PHP du vendredi après-midi au lundi matin.

Que pensez-vous de ces périodes de publications ? Quand pensez-vous qu'il serait le plus pratique pour vous, et donc judicieux pour moi, de publier cette revue de presse ?

lundi 29 juin 2009 à 10h59 - PHP 10   0

Revue de presse PHP du 29/06/09

Comme chaque fin de semaine ou presque (cela devient une habitude :( ), voici la revue de presse hebdomadaire pour vous faire découvrir ce qui se dit d'intéressant sur PHP. Il s’agit d’articles en français ou en anglais que j’aimerais partager avec vous.

Et parce qu'il n'y a pas que PHP au monde, vous trouverez également un article important mais dans un domaine libre et n'ayant pas forcément de rapport avec PHP.

  • Inspekt
    En matière de sécurité d'une application web, il est très important de ne jamais faire confiance aux données venant de l'utilisateur.
    Pour s'assurer que les développeurs n'utilisent pas par inadvertance des données non validées la librairie Inspekt encapsule ces données dans des objets pour lesquels on peut définir des règles de validation. Les données initiales sont supprimée afin d'empêcher leur accès direct.
  • A Set of Objects in PHP: Arrays vs. SplObjectStorage
    Depuis PHP 5.2, la SPL propose la classe SPLObjectStorage qui permet de gérer facilement une collection d'objets.
    Matt Butcher a comparé les performance de cette classe avec l'utilisation d'un classique tableau.
  • Using Apache2 ITK Multi-Processing Module on Linux
    Sur un serveur partagé, il est impératif de pouvoir s'assurer qu'un script d'un utilisateur ne peut pas accéder aux données d'un autre utilisateur. Ce n'est pas toujours une tâche aisée mais heureusement l'utilisation du MPM ITK pour Apache 2 et de suPHP ou suExec simplifie la mise en place de cette sécurité.
  • La question est posée : "PHP : POO ou (exclusif) Procédural ?"
    Olivier Hoareau se pose la question du choix entre Programmation Orientée Objet et programmation procédurale. De son point de vue, le débat n'est pas forcément POO ou Procédural, mais plutôt, "industrialisés/rationnalisés/maîtrisés/testables/bouchonnables" contre "non homogènes, non-bonnes pratiques,non cadrés, non-testable".
  • Format a time interval with the requested granularity
    Cet article présente une fonction qui permet d'afficher un intervalle de temps avec l'unité la plus représentative. C'est à dire que si la différence entre deux dates est seulement de quelques heures, les années, mois et jours seront omis.

Et voici l'article bonus de la semaine :

Becoming a Better Programmer: Fighting Your Natural Instincts
Les développeurs ont souvent du mal à dévoiler leur code. Il est difficile d'accepter de soumettre son code et donc son expertise aux commentaire d'autres développeurs. C'est cependant le gage d'un code de qualité car il y a plus d'idées dans plusieurs cerveaux que dans un seul.

lundi 29 juin 2009 à 10h52 - PHP 0   0

Revue de presse PHP du 22/06/09

Comme chaque fin de semaine ou presque, voici la revue de presse hebdomadaire pour vous faire découvrir ce qui se dit d'intéressant sur PHP. Il s’agit d’articles en français ou en anglais que j’aimerais partager avec vous.

Et parce qu'il n'y a pas que PHP au monde, vous trouverez également un article important mais dans un domaine libre et n'ayant pas forcément de rapport avec PHP.

  • Read-optimize your source code
    Que ce soit par inadvertance ou par fainéantise, il est courant de négliger le soin avec lequel nous écrivons du code car nous nous concentrons sur la tâche à réaliser.
    Le problème est qu'un code est généralement bien plus souvent lu qu'écrit et généralement par des gens différents du développeur initial. Il est donc primordial de rédiger son code afin qu'il soit facilement compréhensible plus tard.
  • Creating custom stream filters
    Les filtres de flux de PHP permettent de modifier à la volée des données qui transite par ce flux. Il y a beaucoup d'applications à cela comme la compression/décompression, l'encryptage/décryptage, etc.
    L'écriture d'un filtre personnalisé est assez simple comme le montre cet article.
  • SPL: a hidden gem
    Présente depuis la version 5, l'extension SPL est probablement la partie la plus injustement sous-estimée de PHP. Celle-ci fournit un certain nombre de fonctionnalités avancées comme un autoload gérant une pile, de nombreux itérateurs et des classes pour gérer différentes structures.
  • Debugging with multiple users
    Xdebug est un excellent outil permettant, entre autre, de déboguer PHP. Malheureusement, il ne permet pas à plusieurs développeurs de déboguer une même application. En tout cas, pas sans l'astuce dévoilée ici par Derick Rethans, l'auteur d'Xdebug.
  • Essential Guide To Regular Expressions: Tools and Tutorials
    Les expressions régulières, ou pour parler plus correctement les expressions rationnelles, sont une manière extrêmement puissante mais également assez déroutante de manipuler des chaînes de caractères.
    Ce guide recense une multitude d'outils, de pense-bêtes et d'exemples d'utilisations.

Et voici l'article bonus de la semaine :

XP sans Scrum, Scrum sans XP
Une courte analyse comparative de Scrum et XP, les deux méthodes agiles les plus en vue. L'auteur y décrit leur différences et leurs complémentarités.

lundi 22 juin 2009 à 18h29 - PHP 0   0

XHTML - CSS - DotClear - Technorati

Les billets de ce blog sont sous licence Creative Commons