Préface
Tout le monde connaît PHP aujourd’hui, c’est un fait. Enfin… connaît de l’extérieur, pour l’avoir utilisé du point de vue d’un développeur ou d’un administrateur.
Cet ouvrage, en revanche, est dédié aux entrailles du langage.
Ce que beaucoup d’utilisateurs de PHP ignorent, c’est que le langage est lui-même un programme, écrit avec le langage C, qui à la date où ces lignes sont écrites, comporte environ 700.000 lignes.
D’une complexité relativement élevée, la source de PHP témoigne de son fonctionnement le plus profond. Cependant, celle-ci n’est que très peu documentée, et se plonger dedans, même avec un passé en C costaud, n’est pas tâche facile.
S’intéresser à l’API interne de PHP permet, principalement au moyen de l’écriture d’extensions, de comprendre le fonctionnement du langage, de l’enrichir, d’en changer le fonctionnement ou encore de porter des parties de code PHP en langage C, beaucoup plus efficace et rapide en terme de traitement.
Le but de cet ouvrage est justement de vous guider pas à pas au travers de l’API de PHP. Vous découvrirez ainsi sa richesse, mais aussi sa complexité et son long historique (les premières lignes datent de 2000) qui font qu’elle est difficilement apprivoisable sans être tenu par la main.
Après des rappels sur la compilation de projets C sous Linux comme sous Windows, vous apprendrez à manipuler les structures indispensables du cœur de PHP. Puis, au travers de l’écriture d’une extension, vous verrez où et comment allouer et libérer de la mémoire, créer des fonctions PHP, jouer avec les classes et les objets, se brancher sur le système de configuration de PHP, manipuler les tableaux PHP de l’intérieur sans oublier la maîtrise du curieux type « ressource ». Tout ceci sera complété de conseils, de bonnes pratiques à suivre et de pièges à éviter.
Enfin, une introduction aux pièces les plus complexes vous permettra de découvrir sereinement les concepts de compilation de code, d’OPCode, de caches ou encore de machine virtuelle.
Je vous souhaite une bonne lecture.
– Julien Pauli
Contributeur PHP et release manager de PHP 5.5 & 5.6