Mes impressions sur le web, les standards et autres…


PHP5, getter et empty()

Je viens de constater une chose étrange avec PHP5. Si la valeur d’une propriété d’un objet est récupérée par le biais de la méthode magique __get(), cette propriété est toujours considérée comme vide lorsqu’on la teste avec empty() :


class Test {
    private $_foo = 'bar';
    
    public function __get($name)
    {
        if( $name == 'foo' ) {
            return $this->_foo;
        }
    }
}

$test = new Test();
echo $test->foo;// affiche bien 'bar'
var_dump(empty($test->foo));// affiche bool(true) ?!

Il y a probablement une logique interne derrière ce comportement surprenant, mais basiquement, on s’attend simplement à ce que empty() nous dise si la variable ou l’attribut testé est vide ou pas, point barre. Cela fait partie de ces comportements vicieux qu’a parfois PHP.

Dans la même veine, on a le résultat d’une comparaison non stricte entre un entier et une chaîne (par exemple issue de $_POST) :


$var1 = 1;
$var2 = '1textQuelconque';

var_dump($var1 == $var2);

…affichera 'bool(true)'. Et oui… C’est déjà plus logique, si l’on veut, mais c’est tout aussi vicieux. Attention donc, quand vous contrôlez les données provenant d’un formulaire. Rappelez-vous que tout ce que vous recevez dans $_GET, $_POST et les autres ont le type 'string' (ou 'array', si vous passez des tableaux), donc faites vos comparaisons exclusivement entre valeur de type 'string', ou bien utilisez intval() et ses amis quand vous attendez des données précises.

Migration vers un nouveau serveur

Et voilà. Migration achevée en un temps record. Ne reste plus qu’à attendre que les DNS finissent de se propager joyeusement. Au menu :

  • Enfin MySQL 4.1 ! Enfin, mes données sont stockées dans des tables proprement déclarées comme contenant de l’utf-8, et je peux profiter de toutes les autres nouveautés qu’apporte cette version par rapport à la 4.0.
  • Adieu l’antique Webalizer, bonjour Awstats.
  • L’avantage quand on est sur un serveur privé, c’est qu’on peut installer à peu près ce qu’on veut (les limitations ne se trouvant qu’entre la chaise et le clavier). Je me suis donc installé les magnifiques outils que sont Subversion et Trac pour rendre public le développement de Wamailer 3.0. C’est par ici que ça se passe.
  • PHP 5.1.2 à la place de PHP 5.0.5. C’est toujours ça de pris, surtout au vu des nouveautés apportées par la branche 5.1.x
  • Apache 2.x à la place d’Apache 1.3.x. C’est toujours ça de pris également. La version 2 est de toute évidence plus puissante, plus rapide, toussa.

Point de rupture

Je vous faisais part au tout début du mois de février d’un article écrit par Krassimir Petrov et analysant la décision de l’Iran d’ouvrir une bourse du pétrole en euros en mars 2006 et son impact sur le monde. Cette bourse va ouvrir ses portes lundi prochain (20 mars 2006; cette date aura probablement autant d’importance pour les générations futures que le 29 octobre 1929).

Je viens de tomber sur une analyse du think-tanks Europe 2020 à propos de la crise mondiale majeure qui se profile à l’horizon. Cet article est à lire absolument ! Je vous préviens cependant, vous en ressortirez probablement avec un filet de sueur froide entre les omoplates…