Description
Dans cette conférence nous proposons de présenter les avantages significatifs qu'un
préprocesseur de code intercalé au sein de la fonction __autoload() nous a apporté, pour :
Améliorer PHP en tant que langage de programmation :
- ajouter une nouvelle dimension d'organisation du code, proche de ce que permet la programmation orientée aspect, sous la forme d'un nouveau concept que nous avons nommé superposition de classes,
- ajouter des constructeurs et destructeurs statiques au langage,
- générer du code spécialisé en fonction du contexte d'exécution : supprimer le code mort, résoudre les constantes ou des portions de code de façon statique,
- ou de façon plus anecdotique, libérer le constructeur PHP4 sans casser le code PHP4 ou 5 existant.
Améliorer PHP en tant qu'environnement d'exécution :
- vérifier l'encodage des sources, supprimer les BOM parasites, pour un code 100% UTF-8,
- analyser le code pour anticiper certaines erreurs (divergence des tables de traduction) ou pré-remplir certains caches (tables de traduction),
- substituer des fonctions par d'autres, pour enrichir/corriger/intercepter leur comportement, et par exemple : charger une implémentation PHP de certaines extensions lorsque leur version native est nécessaire mais non présente (mbstring, iconv, etc.) ou détecter les problèmes potentiels liés à la casse des noms de fichiers sous Windows,
- booster le mécanisme d'autoload par insertion/substitution de marqueurs à la volée.
Certains de ces sujets ont déjà été discutés dans la communauté (constructeur statique), d'autres sont possibles grâce à des extensions (runkit pour la substitution de fonctions) et d'autres encore sont à notre connaissance
évoqués pour la première fois (superposition de classe, marqueurs pour autoload).
Nous baserons notre conférence sur l'implémentation 100% PHP que nous avons faite d'un tel préprocesseur dans notre framework de démonstration,
Patchwork.