Julien Pauli - Cours, articles et tutoriaux PHP -
 

Julien PAULI est architecte système (Linux) et logiciel expert certifié PHP/ZendFramework avec une dizaine d'années d'expérience. Il travaille dans l'opensource et contribue à certains projets particulièrement PHP dont il est le release manager.
Il est également co-auteur d'ouvrages : "Zend Framework, bien développer en PHP" et "Performances PHP, audit et optimisation d'une plateforme LAMP"
Conférencier international et membre AFUP, il est animé par l'esprit de recherche, de partage et collaboration, il écrit ainsi de nombreux articles techniques.

Share

Articles

PHP

Fonctionnement interne

Hashtables et tableaux PHP
Les tables de hachage (hashtables) représentent une structure très utilisée dans le langage C pour stocker des paires clé/valeur de données en mémoire. Exactement ce que font les tableaux (array) PHP, qui en sont une implémentation. Nous allons ici brièvement définir les tables de hachage, puis nous allons nous intéresser à la manière dont elles ont été implémentées dans PHP. Nous détaillerons comment les manipuler, nous noterons quelques points remarquables et enfin nous ferons un petit le tour de leurs très nombreuses utilisations au sein du code source de PHP.

Fonctionnement global de PHP
Cet article a pour but de présenter le fonctionnement interne de PHP d'un point de vue global. Il est le premier d'une longue série dont le but est de comprendre en profondeur comment fonctionne PHP, et de prendre la main sur son comportement, majoritairement au moyen d'extensions PHP. Pour cet article, nous détaillerons les principaux organes de PHP, leur fonction, leurs caractéristiques et la manière dont ils interagissent ensemble. Pour suivre convenablement cet article, il sera nécessaire de très bien connaitre le langage PHP, de connaitre le langage C et d'avoir des connaissances en architecture des systèmes.

Les bases de la création d'extensions PHP
Nous allons ici présenter les bases de la création d'une extension PHP. Comment fonctionne une extension PHP ? Comment la concevoir ? A quoi sert-elle ? Comment vit-elle dans PHP ? Pour cela, il sera nécessaire de connaitre le mode de fonctionnement interne de PHP, de bien maitriser le langage PHP - bien sûr - mais aussi le langage C. Cet article considère Linux (Ubuntu/Debian ici) et PHP 5.3.x compilé main.

Maitrise de la gestion des variables
Tout le monde sait manipuler des variables en PHP. Peut-on en dire autant quand les concepts de "copie" et de "références" entrent en jeu ? Nous allons détailler comment fonctionnent les variables au niveau interne à PHP. Cela nous permettra de comprendre très nettement les mécanismes mis en oeuvre lors de l'utilisation d'objets, de références, de fonctions ou de simples variables globales.

Mémoire PHP et Zend Memory Manager
Cet article a pour but de présenter la couche de gestion de mémoire dynamique de PHP : Zend Memory Manager (ZendMM). Nous détaillerons les buts d'une telle couche, en passant par un rappel au sujet de la gestion de la mémoire dynamique en langage C. Nous verrons à quoi sert ZendMM, comment l'utiliser, le personnaliser et en profiter au maximum lors de l'écriture d'extensions PHP notamment. Il est indispensable d'avoir des connaissances du langage C pour suivre cet article. Des notions en architecture des systèmes d'information et en gestion de la mémoire d'un processus sous Linux sont un plus.

Système

SAPI et modes de communication
Le principal mode de fonctionnement de PHP est en couplage avec un serveur Web : PHP et le serveur discutent ensemble. Nous allons voir qu'il existe plusieurs manières de les faire discuter ensemble: module de serveur, CGI ou encore FastCGI. Nous allons passer en revue ces différents moyens de communication, leurs avantages et inconvénients ; puis nous parlerons des modes plus exotiques avec en arrière-plan un serveur Web Apache.

Compilation détaillée de PHP sous Linux
PHP est écrit en C, et à ce titre il est compilable en langage machine. Nous allons détailler comment fonctionne ce processus sous Linux, ainsi qu'une partie de l'éco-système de PHP : ses extensions, les bibliothèques utilisées, son moteur... Pour suivre cet article, vous devez connaitre le langage PHP et avoir quelques notions d'UNIX, c'est tout. Nous effleurerons également quelques concepts relatifs au langage C, sans rentrer dans les détails. La version de PHP considérée est 5.3.x.

Langage

Interaction PHP et MySQL avec mysqli via mysqlnd
Cet article a pour but de montrer les interactions entre PHP et MySQL et de présenter des concepts internes et souvent peu maitrisés, comme par exemples les requêtes directes, les requêtes bufferisées ou les requêtes préparées. Nous allons ainsi détailler une partie de l'extension ext/mysqli de PHP et parler performances et pièges à éviter. Ceci passera nécessairement par l'étude du connecteur mysqlnd, très interessant car offrant pas mal de possibilités, comme le cache de requêtes côté client, la gestion d'un parc de réplication MySQL (maitre-esclaves) ou encore une consommation mémoire bien maitrisée coté PHP.

Autochargement (autoload) de classes en PHP
L'auto-chargement de classes est une fonctionnalité apparue avec PHP5.0. Nous allons ici détailler son fonctionnement, ses différentes implémentations, puis présenter des solutions développées dans les frameworks modernes.

Opérations booléennes et logique binaire en PHP
Savoir manipuler des données binaires en base 2 ou en base 16 (hexadécimal) peut s'avérer nécessaire ne serait-ce que pour la compréhension d'un algorithme. PHP propose pas mal de fonctionnalités à ce sujet, nous allons les passer en revue avec quelques exemples concrets.

Utilisation du débogueur PHP Xdebug
Xdebug est une extension PHP que l'on ne présente plus. Débogueur, profileur (analyse de performances), analyseur de couverture ainsi que fonctionnalités avancées d'introspection PHP, sont autant de possibilités offertes par cette extension entièrement gratuite sous une licence compatible avec celle de PHP. En un mot : un indispensable

Utilisation du tampon de sortie en PHP
Lors du déclenchement d'un affichage en PHP (echo, var_dump, printf ou toute autre fonction), la chaine à afficher ne part pas directement vers l'affichage. Elle est en réalité stockée dans différentes piles appelées "tampons", sur lesquelles l'utilisateur a un contrôle plus ou moins fin. Lorsque le dernier tampon tout en bas est vidé, l'affichage est alors envoyé à un endroit, en fonction de la SAPI utilisée. Par exemple pour CLI, il s'agira de la sortie standard: la chaine est affichée à l'écran. Nous allons ici détailler les différentes couches de tampon, leur utilisation et leur impact sur le code PHP.

PHPUnit avancé : patterns de tests
Nous avons déjà compris le fonctionnement de PHPUnit et le principe des tests en développement PHP, au travers de l'article Développement piloté par les tests avec PHPUnit. Nous allons à présent montrer les fonctionnalités avancées de PHPUnit notamment concernant les patterns de tests, Mock, Stub, Double, Spy ; nous verrons comment les mettre en place au travers d'un exemple simple et concret, et en quoi ces techniques peuvent rapidement devenir addictives. Pour cela, il conviendra de rappeler les grands principes du développement logiciel orienté objet : SOLID.

Création d'objets ActiveRecord avec PDO
PDO est une extension (compilée nativement) de PHP qui signifie PHP Data Object. Elle est aujourd'hui très utilisée dans PHP et représente une référence à connaitre. Nous allons voir comment mettre en place un système permettant la création d'objets ActiveRecord sauvegardables, basés sur PDO.

Le développement piloté par les tests avec PHPUnit
Les tests, au même titre que la documentation, font parti du code. Un code fouilli est difficilement testable. Un code testable est un code maintenable. Tester son code permet de mieux appréhender le changement de spécifications et de valider le bon fonctionnement d'un algorithme. Nous allons voir une initiation au développement piloté par les tests, avec PHPUnit.

Un point sur la certification Zend pour PHP
Apparue en 2004, la certification Zend est l'unique certification qui existe au monde sur PHP. Actuellement uniquement sur PHP5, elle a la particularité d'être plutôt complexe. Plus que PHP, elle sert à évaluer les aptitudes du candidat sur le web et la programmation dans sa globalité. POO, Design Patterns, reconnaissance de failles de sécurité, protocole HTTP, gestion des flux de données, XML et services webs, sont autant de questions qui sont posées. Etant moi-même formateur à la certification chez Anaska, je vous propose dans cet article, de passer en revue les sujets abordés, mais aussi les questions types, les astuces et les pièges à éviter.

La gestion avancée des dates
Depuis PHP 5.1, la gestion des dates en PHP a profondément changé. Certaines fonctions ont été réécrites, la gestion interne des dates s'est agrandie et elle est devenue indépendante de l'OS sous-jascent.
De nouveaux objets/fonctions ont fait leur apparition qui apportent, entres autres, la gestion des fuseaux et décalages horaires (heure d'été), autant de notions intéréssantes en développement web et sur lesquelles il serait dommage de faire l'impasse. Faisons un point dessus.

Les liaisons UML implémentées avec PHP
UML définit plusieurs liens remarquables entre les classes. La totalité de ces liens pondérés permet de mesurer ce que l'on appelle le couplage. Savoir lire un diagramme de classes est aujourd'hui indispensable pour la conception d'une application web.
PHP ne fait pas exception à cela, son modèle objet étant très mûr et tout à fait capable. Nous allons ici présenter les différentes liaisons, leurs caracteristiques ainsi que leurs avantages/inconvénients et quand les utiliser. Association, héritage, agrégation, composition. Dans cet article, nous allons voir comment utiliser ces liaisons avec PHP.

Design Pattern observateur tout en puissance
Le design pattern observateur est un classique du GOF, il participe au découplage et à la réduction des dépendances.
En général, 2 interfaces sont utilisées, on peut aussi manipuler des classes abstraites. Nous allons ici montrer un exemple complet de son utilisation et nous allons nous aider de la puissante librairie objet interne de PHP : la SPL.

Introduction à la SPL : Standard PHP Library
PHP5 possède un modèle objet 'non vide' : il est agrémenté de classes et d'interfaces internes, réunis dans ce qu'on appelle la SPL, ou Standard PHP Library.
Nous allons décrire en quoi ils peuvent s'avérer très utiles.

Apache

Conception détaillée d'hôtes virtuels sous Apache
Souvent peu compris, l'hébergement virtuel est de nos jours un acquis. Un même serveur physique/logiciel capable d'héberger plusieurs sites parfois très différents, voila ce qu'est le "virtual hosting" (vhost) Dans cet article, nous allons voir comment mettre en place un hébergement virtuel sous Apache, avec le détail de toutes les facettes : types de vhost, sécurité, contrôle d'accès, DNS...

Configurer un forward proxy simple avec Apache
Nous allons détailler la mise en place d'un proxy forward avec Apache2. Nous partirons depuis la compilation du logiciel, jusqu'à sa configuration complète, mise en cache comprise. En Français, un proxy se traduit par "serveur mandataire". Nous garderons cependant le mot "proxy" dans cet article.

Web

HTTP : le protocole du Web passé en revue
HTTP est le protocole du Web. Comprendre HTTP, c'est comprendre une bonne partie du fonctionnement du Web et une partie conséquente des enjeux d'aujourd'hui concernant la sécurité des applications webs. Nous allons détailler dans cet article le protocole en lui-même. Vous allez voir qu'il n'est pas spécialement simple, contrairement à ce qu'on pourrait penser, et qu'une mauvaise compréhension ou utilisation peuvent avoir des repercussions néfastes, notamment sur les performances, le rendu final de la réponse, voire la sécurité du réseau. Nous nous rendrons aussi compte qu'il est complet, et qu'à ce titre on utilise rarement son plein potenciel, à tort (même si quelques fonctionnalités sont tout de même très spécifiques).

Développement web : Généralités sur la sécurité
Nous allons voir les grands points, concernant la sécurité, à garder en tête dans le cadre du développement d'une application web, car on ne peut développer sans en tenir compte, et ceci implique des connaissances profondes du fonctionnement d'Internet en général, et d'une application web.

Ouvrages

Cet ouvrage présente les meilleures pratiques de développement web avec PHP5 et le Zend Framework : design patterns - MVC - bases de données - sécurité - intéropérabilité - tests unitaires - gestion de flux et de sessions ...
Non sans rappeler les prérequis techniques et théoriques à l'utilisation du framework, l'ouvrage aidera tant les développeurs débutants en PHP que les chefs de projets ou architectes aguerris souhaitant l'utiliser en entreprise.
Quelle démarche l'expert PHP doit-il adopter face à une application PHP/LAMP qui ne tient pas la charge ? Comment évaluer les performances de son architecture Linux, Apache, MySQL et PHP, afin d'en dépasser les limites ? Une référence pour le développeur et l'administrateur PHP : optimiser chaque niveau de la pile Linux, Apache, MySQL et PHP. Cet ouvrage offre une vue d'ensemble de la démarche à entreprendre pour améliorer les performances d'une application PHP/MySQL. Non sans avoir rappelé comment s'articulent les éléments de la pile LAMP, l'ouvrage détaille la mise en place d'une architecture d'audit et de surveillance, et explique comment alléger la charge à chaque niveau de la pile.

Copyright © 2006 Julien Pauli. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula