Cours Complet sur PHP
PHP
*PHP .1 Introduction au langage PHP . 10
Les environnements de travail pour développer en PHP . 10
Les bases du langage PHP . 10
Traitement d'images avec PHP . 10
La programmation orientée objet (POO) . 10
Les motifs de conception (design patterns) .. 10
Sécurité des applications PHP .. 10
Les frameworks PHP .. 11
Introduction au langage PHP . 12
Préambule . 12
Les caractéristiques du langage PHP . 12
PHP, un langage conçu pour les applications web dynamiques . 14
PHP pour d'autres domaines d'application .. 15
Les limites de PHP .. 16
Conclusion 17
Migration de PHP 4 vers PHP 5 17
Pourquoi migrer ? . 18
Ce qui a changé avec PHP 5 ? 18
Preparer et tester sa migration . 22
Conclusion 25
Installation et prise en main de MAMP . 26
Téléchargement du logiciel . 26
Installation de MAMP . 26
Premier démarrage du logiciel . 27
Les répertoires importants de MAMP .. 28
Premier test de PHP .. 28
Gestionnaires de bases de données : PHPMyAdmin et SQLiteManager . 29
Le widget MAMP .. 31
Conclusion 31
Premier programme : affichage du traditionnel « Hello World .. 31
Premier script PHP .. 31
Explication du code . 32
Amélioration du Hello World .. 32
Conclusion 33
Les différents types de commentaires .. 34
Un commentaire, c'est quoi ? 34
Le commentaire linéaire 34
Le commentaire multilignes 35
Conclusion 35
Les constantes 36
La fonction native define() .. 36
Déclaration d'une constante .. 37
Redéfinition d'une constante . 38
Conclusion 38
Les variables . 38
Qu'est-ce qu'une variable ? 39
Déclaration et initialisation d'une variable . 39
L'affectation de valeur à une variable .. 41
La concaténation, c'est quoi ? .. 41
Opérations mathématiques sur les variables .. 42
Les variables dynamiques .. 43
Test de l'existence d'une variable .. 44
Destruction d'une variable .. 44
Conclusion 45
Les tableaux (ou arrays) 45
Qu'est-ce qu'un tableau ? 46 Déclaration d'un tableau .. 46
Ajout d'une nouvelle entrée dans un tableau .. 47
Le tableau indexé numériquement . 48
Le tableau associatif .. 48
Les tableaux multidimensionnels 49
Tableau particulier : la chaîne de caractères .. 50
Parcours d'un tableau 50
Afficher le contenu d'un tableau .. 52
Opérations sur les tableaux 52
Conclusion 53 Les opérateurs . 54
Les opérateurs arithmétiques 54
Les opérateurs d'incrémentation / décrémentation . 54
L'opérateur d'assignation . 55
Les opérateurs de chaine de caractères 55
Les opérateurs de comparaison .. 56
Les opérateurs logiques 57
Les opérateurs binaires (bitwise) 58
Les opérateurs combinés 59
L'opérateur de contrôle d'erreur .. 60
L'opérateur d'exécution . 60 Les opérateurs sur les tableaux .. 61
Les opérateurs de type d'objet (instance of) 61
La priorité des opérateurs 62
Conclusion 63
Les structures de contrôle : les conditions . 64
Les structures conditionnelles .. 64
L'instruction conditionnelle if() .. 64
La clause else . 65
L'instruction elseif() .. 65
Syntaxe alternative sur une ligne 67
L'instruction switch() 67
Conclusion 69
Les structures de contrôle : les boucles .. 70
Qu'est-ce qu'une boucle ? .. 70
La boucle for() . 70
La boucle while() .. 71
La boucle do { … } while() 72
La boucle foreach . 73
Les instructions d'arrêt et de continuité .. 74
Conclusion 76
Les procédures et fonctions utilisateurs .. 77
Qu'est-ce qu'une fonction / procédure utilisateur ? . 77
Déclaration d'une fonction .. 77
Appel d'une fonction 80 Visibilité des variables 82
Portée d'une variable . 83
Passage de paramètre par copie ou référence . 85
Les fonctions à paramètres infinis . 86
Conclusion 87
Traitement des formulaires avec $_GET et $_POST . 88
Traitement PHP ou traitement Javascript ? . 88
Les parties essentielles d'un formulaire . 88
Les tableaux superglobaux $_POST et $_GET . 90
Exemple simple et concret de traitement de formulaire 91
Un mot sur les apostrophes magiques 94
Conclusion 94
Les cookies 95 Qu'est-ce qu'un cookie ? . 95 Qu'en est-il de la sécurité ? 96
Génération d'un cookie avec setcookie() .. 96
Lecture d'un cookie . 98 Suppression d'un cookie .. 98 Stocker des types complexes dans un cookie 99 Les principaux cas d'utilisation des cookies .. 101
Conclusion . 102
Les sessions .. 102 Une session c'est quoi ? 102 Initialisation (et restauration) d'une session .. 103 Lecture et ecriture d'une session . 104 Destruction d'une session . 105 Configuration des sessions sur le serveur . 105
Approche pratique : concevoir un accès restreint . 106
Liens annexes .. 108
Conclusion . 108
Les importations de fichiers avec require() et include() .. 109
Les fonctions include() et require() . 109 Comment utiliser include() et require() . 109 Require_once() et include_once(), c'est quoi ? .. 111 Include() et require(), sensibles au piratage !!! 111
Conclusion . 113
Imagefilter() : les effets spéciaux .. 113
Les bases 114 La fonction ImageFilter .. 114
Jouons avec quelques types de filtres .. 124
Conclusion . 127
Les classes et objets . 128
Quels sont les avantages et inconvénients d'une approche objet ? .. 128
Qu'est-ce qu'un objet ? .. 129
Qu'est-ce-qu'une classe ? 129
Qu'est-ce-qu'une instance ? 130
Déclaration d'une classe 130
Utilisation des classes et des objets .. 132
Conclusion . 136
Visibilité des propriétés et des méthodes . 136
Qu'est-ce que la visibilité des propriétés et méthodes d'un objet ? 136
L'accès public .. 137
L'accès private . 138
L'accès protected .. 139
Mise à jour d'un attribut privé ou protégé : rôle du mutator . 141
Obtenir la valeur d'un attribut privé ou protégé : rôle de l'accessor 142
Quelques bonnes pratiques 143
Conclusion . 143
Méthodes magiques : __set() et __get() .. 143
Rappels concernant la visibilité des propriétés et des méthodes 144
La méthode magique __set() . 145
La méthode magique __get() . 146
Cas d'application pratique 147
Inconvénients des méthodes magiques __get() et __set() .. 148
Méthodes magiques : __call() . 148
Appeler une méthode qui n'existe pas .. 148
Implémenter la méthode __call() .. 149
Exemple concret : création d'un moteur de recherche 150
Inconvénients de l'utilisation de la méthode magique __call() .. 153
Méthodes magiques : __clone 153
Rappels sur la programmation orientée objet .. 153
PHP 5 et le passage des objets par référence 154
Le mot-clé clone . 155
Implémentation de la méthode magique __clone .. 156
Implémentation dans le cas d’un Singleton 157
Conclusion . 159
Méthodes magiques : __sleep() et __wakeup() .. 159
Qu’est ce que la sérialisation de données ? . 160
Serialisation / Désérialisation d’une variable de type integer . 160
Sérialisation / désérialisation d'un tableau (Array) 161
Sérialisation et désérialisation d'un objet 162
Méthodes magiques __sleep() et __wakeup() . 164
Conclusion . 166
Les classes abstraites et finales 166
Présentation et déclaration des classes abstraites .. 167
Déclaration et redéfinition des méthodes abstraites 169
Cas particuliers des classes et méthodes finales .. 174
Conclusion . 177
Les exceptions - 1ère partie . 177
La classe native Exception .. 178
Générer, lancer et attraper des exceptions à travers le programme . 179
Introduction à la seconde partie de ce tutoriel . 183
Les exceptions - 2ème partie .. 184
Dériver la classe Exception et créer des exceptions personnalisées 184
Centraliser le traitement des erreurs non capturées 189
Inconvénients et limitation des exceptions en PHP .. 191
Conclusion . 191
Utiliser l'interface Iterator avec PHP 5 192
Rappel sur les Interfaces .. 192
L'interface Iterator .. 193
Parcourir un objet avec l'instruction foreach() .. 193
En savoir plus sur l'interface Iterator . 195
Singleton : instance unique d'une classe . 196
Qu'est-ce qu'un patron de conception ? .. 196
Introduction au patron de conception Singleton . 196
Exemple d'implémentation de Singleton . 199
Conclusion . 202
Introduction aux Cross Site Request Forgeries ou Sea Surf 202
Présentation générale des CSRF 202
Un exemple concret . 202
Quels sont les moyens pour se protéger des CSRF ? 203
Conclusion . 205
Introduction au langage PHP
- Introduction au langage PHP
- Migration de PHP 4 vers PHP 5
Les environnements de travail pour développer en PHP
- Installation et prise en main de MAMP
- Installer un environnement LAMP6 sur Debian
Les bases du langage PHP
- Premier programme : affichage du traditionnel « Hello World »
- Les différents types de commentaires
- Les constantes
- Les variables
- Les tableaux (ou arrays)
- Les opérateurs
- Les structures de contrôle : les conditions
- Les structures de contrôle : les boucles
- Les procédures et fonctions utilisateurs
- Traitement des formulaires avec $_GET et $_POST
- Les cookies
- Les sessions
- Les importations de fichiers avec require() et include()
Traitement d'images avec PHP
- Imagefilter() : les effets spéciaux
La programmation orientée objet (POO)
- Les classes et objets
- Visibilité des propriétés et des méthodes
- Méthodes magiques : __set() et __get()
- Méthodes magiques : __call()
- Méthodes magiques : __clone
- Méthodes magiques : __sleep() et __wakeup()
- Les classes abstraites et finales
- Les exceptions - 1ère partie
- Les exceptions - 2ème partie
- Utiliser l'interface Iterator avec PHP 5
Les motifs de conception (design patterns)
- Singleton : instance unique d'une classe
Sécurité des applications PHP
- Introduction aux Cross Site Request Forgeries ou Sea Surf
- Sécuriser les mots de passe avec les hashs et les salts
Les frameworks PHP
- Génération de PDF avec le Zend Framework
Introduction au langage PHP
Le langage PHP a été inventé par Rasmus LERDORF en 1995 pour son usage personnel (mise en ligne de son CV en l'occurence). Autrefois abbréviation de Personal HomePage devenue aujourd'hui Hypertext Preprocessor, PHP s'impose comme un standard dans le monde de la programmation web par ses performances, sa fiabilité, sa souplesse et sa rapidité.
Préambule
PHP a été inventé à l'origine pour le développement d'applications web dynamiques qui constituent encore le cas d'utilisation le plus courant et son point fort. Cependant, les évolutions qui lui ont été apportées jusqu'à aujourd'hui assurent à PHP une polyvalence non négligeagle. PHP est par exemple capable d'interragir avec Java, de générer des fichiers PDF, d'exécuter des commandes Shell, de gérer des objets (au sens programmation orientée objet), de créer des images ou bien de fournir des interfaces graphiques au moyen de PHP GTK.
Dans cette présentation du langage, nous introduirons tout d'abord les caractéristiques de PHP, puis nous verrons en quoi il est particulièrement adapté aux développements d'applications web. Nous synthétiserons ensuite les autres types d'applications possibles aec PHP avant de terminer sur les limites que l'on peut lui reprocher.
Les caractéristiques du langage PHP
License
PHP est tout d'abord un langage de script interprêté (en réalité précompilé enOpcode), gratuit, OpenSource et distribué sous une license autorisant la modification et la redistribution. Portabilité
PHP est supporté sur plusieurs systèmes d'exploitation. C'est par exemple le cas des versions Microsoft Windows™, mais aussi des systèmes reposant sur une base UNIX (Apple MAC OS X™, distributions Linux ou encore Sun Solaris). Il sera alors très facile de déplacer une application écrite en PHP d'un serveur Windows d'origine vers un serveur Linux sans avoir à la modifier (ou très peu). Exécution
D'un point de vue exécution, PHP a besoin d'un serveur Web pour fonctionner. Toutes les pages demandées par un client seront construites par le serveur Web, en fonction des paramètres transmis, avant d'être retournées au client. Le schéma ci-dessous illustre le principe de fonctionnement de PHP.
Note :il aurait été possible d'ajouter un serveur de bases de données (local ou distant) sur cette illustration. Nous aurions eu alors deux étapes supplémentaires qui sont l'interrogation de la base de données par PHP et la récupération des résultats en provenance du serveur SQL.Apprentissage de PHP
PHP est un langage dit de « haut niveau » dont la syntaxe est très proche du langage C. Cette syntaxe proche du langage naturel lui assure un apprentissage rapide et peu de contraintes d'écriture de code. Néanmoins, la maîtrise rapide de sa syntaxe ne signifie pas la maîtrise de ses fonctionnalités et de ses concepts. Une bonne connaissance et une utilisation avancée de la programmation PHP nécessite un temps d'apprentissage relativement long. Richesse du langage PHP
Une des forces du langage PHP est sa richesse en terme de fonctionnalités. En effet, il dispose à l'origine de plus de 3 000 fonctions natives prêtes à l'emploi garantissant aux développeurs de s'affranchir de temps de développement supplémentaires et parfois fastidieux. Ces fonctions permettent entre autre de traiter les chaînes de caractères, d'opérer mathématiquement sur des nombres, de convertir des dates, de se connecter à un système de base de données, de manipuler des fichiers présents sur le serveur
PHP puise aussi sa richesse dans le dynamisme de sa communauté de développeurs. Celle-ci était estimée à 500 000 personnes environ en 2003 mais il est très probable qu'elle ait dépassé le million maintenant. Les profils de développeurs de la communauté sont très divers. Il y'a ceux qui apportent de nouvelles fonctionnalités et librairies de version en version, ceux qui traduisent la documentation en plusieurs langues ou encore les programmeurs ayant des compétences plus modestes qui réalisent des applications Opensources prêtes à l'emploi. Parmi les plus connues, nous pouvons citer les CMS (Joomla, SPIP, Dotclear, Wordpress ), les systèmes de ventes en ligne (OSCommerce), les forums (PHPBB, IPB, VBulletin), les frameworks (Zend Framework, Symfony, CakePHP, Jelix)
PHP, un langage fiable et performant
Le langage est maintenant devenu un langage fiable, performant et viable. Il est capable de supporter des sites qui sollicent des millions de requêtes journalières. De nombreuses entreprises de renommée nationale et internationale lui font confiance pour le développement de leur site Internet. Nous pouvons parmi elles citer TF1, IBM, Le Monde, Le Figaro, Club-Internet, Orange, Pages Jaunes Un récent rapport daté de novembre 2006 indique que 87% des entreprises du CAC40 utilisent PHP. Lire l'interview de Perrick Penet (AFUP).
PHP, un langage conçu pour les applications web dynamiques
Le langage PHP a la principale fonction d'être spécialement conçu pour la réalisation d'applications web dynamiques. Par définition, une « application (ou page) dynamique » est un programme capable de générer une page unique en fonction de paramètres qui lui sont transmis.
Un script PHP peut donc être intégré directement à l'intérieur d'un code html. Petit exemple pratique ci-dessous :
Premier programme PHP : "Hello World"
Le script PHP, clairement identifié par les deux balises (fermeture), provoquera l'écriture de la chaîne de caractères entre les balises HTML après son exécution sur le serveur.
Nous aurions également pu obtenir le même résultat en utilisant le script PHP suivant :
Autre version du "Hello World"
Hello World en PHP
De ce fait, on en déduit que PHP est capable de générer du code HTML (ainsi que d'autres formats), ce qui fait tout son intérêt. La présentation du document généré est alors complètement dépendante des conditions passées et des paramètres initiaux fournis. Prenons l'exemple du site de vente par correspondance Les utilisateurs inscrits au site qui ont déjà passé plusieurs commandes auront la surprise de voir à chaque nouvelle visite sur leur page personnalisée, une liste de produits sélectionnés automatiquement qui correspondent aux critères de ses précédents achats. Chacune de ces actions de marketing direct ciblé est unique et générée en fonction des intérêts du consommateur.
PHP pour d'autres domaines d'application
Fort de sa richesse, PHP ne se limite pas forcément à l'édition de pages web dynamiques. Il peut par exemple être utilisé en ligne de commande via l'utilisation de l'exécutable php. Ce cas d'utilisation permet alors d'exécuter des scripts directement sur les machines. Un script PHP serait alors mis au profit de la machine. Nous pouvons très bien imaginer un programme PHP capable de supprimer un certain nombre de fichiers présents dans un dossier. Il est même possible de coupler l'utilisation de PHP avec un gestionnaire de tâches tel qu'un serveur cron sous Linux.
PHP c'est également la possibilité de créer des applications lourdes fonctionnant sans serveur ni navigateur. Autrement dit des applications traditionnelles, autonomes et munies de fenêtres. Tout cela se réalise au moyen de la librairie PHP GTK disponible à l'adresse :
Un autre point fort de PHP est sa capacité à s'interfacer très facilement avec de nombreux systèmes de gestion de bases de données relationnelles (SGBDR). Parmi eux, nous pouvons retrouver MySQL, Oracle, SQLite, MSSQL, PostgreSQL Grâce à ces systèmes couplés au langage PHP, il devient possible de distribuer les applications sur plusieurs serveurs (serveur Web + serveur de bases de données). Le second intérêt à cela est de pouvoir rendre une application encore plus dynamique. En effet, les données (contenu) de l'application se trouve à présent dans la base de données et PHP se charge de les récupérer puis de les manipuler (traitement des chaines de caractères, enregistrement dans des fichiers, génération de flux RSS ).
Les possibilités offertes par PHP sont donc très nombreuses et nous n'allons pas les détailler toutes car nous y resterions des heures. Retenons néanmoins une liste de ses principales capacités :
- Manipulation d'un système de fichiers (création, édition, suppression, droits d'accès )
- Gestion des sessions utilisateurs
- Génération et parsing de documents XML grâce à la librairie SimpleXML
- Génération d'images avec GD2
- Génération de fichiers PDF
- Accès simplifié aux bases de données avec la librairie PDO
- Exécution de commandes Shell
- Gestion des e-mails en POP et IMAP
- Compression et décompression d'archives ZIP
- Cryptage MD5 et SHA1
- Gestion d'annuaires LDAP
- Manipulation des dates
- Manipulation des URL
- Envoi et lecture de cookies
- Dialogue avec Java
- Utilisation d'Ajax •
La version actuelle de PHP apporte un grand vent de fraîcheur au langage et aux professionnels. Le principal manque jusque là était son modèle objet trop succint. Les développeurs se sont alors penchés sur cette problématique et ont finalement implémenté un modèle de programmation objet proche du langage Java. Grâce à un tel modèle, les professionnels encore hésitants à utiliser PHP deviennent de plus en plus nombreux. Des applications complètement objet voient également le jour et intègrent un design pattern (motif de conception) MVC. Les plus connues aujourd'hui sont les frameworks Zendetdes sociétés respectives Technologieset (agence française).
Les limites de PHP
Malgré toutes les qualités que nous pouvons attribuer au langage PHP, subsistent quelques défauts. Par exemple, dans le cas de très grosses applications, il peut présenter quelques faiblesses et devenir inadapté. Un langage tel que PERL deviendrait alors plus adéquat. Cet argument reste toutefois très subjectif dans la mesure où les développeurs de PHP améliorent la qualité et la robustesse du langage.
Le second défaut (mais qui paradoxalement fait son succès et sa qualité) que nous pouvons lui reprocher est sa grande simplicité d'utilisation. Cela a beaucoup terni l'image de PHP parceque tout webmaster (même très peu expérimenté) devient capable de créer du code et des applications facilement. Cependant, la plupart des codes produits par des développeurs amateurs n'est pas forcément "propre" ou bien conçu, souvent peu sécurisé, peu maintenable et même non optimisé. Les autres langages comme C++, .Net, Java, ASP, Perl, Python ou Ruby ne subissent pas cette mauvaise image dans la mesure où leur apprentissage n'est pas forcément très aisé.
Enfin, le dernier défaut reprochable à PHP est son manque de rigueur dans la nomenclature des fonctions et de la syntaxe (voir tutoriel sur l'utilisation des balisescourtes). Tout d'abord, les fonctions ne sont pas sensibles à la casse, ce qui signifie par exemple que str_replace() et STR_REplaCe() sont identiques pour l'interprêteur PHP. Heureusement la nouvelle version en cours (PHP6) résoudra ce défaut. Par ailleurs, nous constatons un manque de standardisation des noms des fonctions :
- Utilisation du séparateur underscore : str_replace(), preg_match(), mysql_real_escape_string()
- Fonctions composées de plusieurs mots écrite en un seul : wordwrap(), htmlspecialchars()
- Traduction du to en litéral ou numéraire : bin2hex(), strtotime()
Conclusion
Nous conclurons que PHP a encore de beaux jours devant lui et que son avenir sera encore très prometteur avec l'arrivée de sa nouvelle version. Celle-ci lui apportera d'ailleurs une touche plus professionnelle car elle se destine plus particulièrement aux utilisateurs confirmés et professionnels.
Migration de PHP 4 vers PHP 5
Le support de PHP 4 appartient au passé. Il devient donc urgent de migrer vers PHP 5 car en 2008 nulle nouvelle version de PHP 4 ne verra le jour (un support sera tout de même assuré sur les failles de sécurité jusqu'au 08/08/2008).
La compatibilité entre PHP 5 et PHP 4 a été une des préoccupations majeures durant le développement de PHP 5. Une grande majorité des applications devraient pouvoir être exécutées sur PHP 5 sans problèmes, ou ne nécessiter que des modifications mineures. Il existe cependant quelques différences et nous allons essayer de les résumer ici pour vous permettre une migration simple.
Pourquoi migrer ?
- Nouvelles fonctionnalités
- Meilleures performances
- Meilleure sécurité
- Meilleure stabilité
- PHP 5 est fortement supporté Ce qui a changé avec PHP 5 ?
- la refonte du coeur de PHP qui permet une prise en charge complète de la programmation orientée objet
- la refonte de la prise en charge de XML
- l’intégration de la base de données embarquée SQLite
- l'intégration de nouvelles extensions (JSON, Filter, ZIP, )
- l’apparition d’un socle commun pour la gestion des appels aux bases de données : PHP Data Object (PDO)
- l'utilisation de la reflexion objet ( introspection )
- les exceptions ont fait leur apparition en PHP5
- un niveau d'erreur E_STRICT à été ajouté
- apparition de la SPL (Standard PHP Library), un rassemblement de classes internes utiles
Bien que la plupart des scripts PHP 4 existants devraient fonctionner, il convient de noter quelques différences majeures pouvant entraîner des erreurs ou des comportements différents :
- la gestion des objets (passage par référence)
- la refonte du support de DOM avec l'abandon de l'extension DomXML
- l'extension MySQL n'est plus incluse par défaut
- nouveau mode d'erreur E_STRICT
Le nouveau modèle objet
La principale nouveauté de PHP 5 est certainement le nouveau modèle objet. Le traitement des objets a complètement été réécrit pour arriver à de meilleures performances et plus de fonctionnalités. A ce jour le modèle objet de PHP 5 est proche de celui de Java, il en résulte donc un certain nombre de nouveautés : méthodes magiques, visibilité, (était déjà présent en PHP4, la nouveauté c'est le destructeur ou plus généralement les méthodes magiques), encapsulation, clonage, interfaces, classes abstraites
Les objets sont passés par référence
Dans PHP 4 l'objet en entier était copié lorsqu'il était assigné ou passé comme paramètre à une fonction. Dans PHP 5 les objets sont référencés par un pointeur et non pas leur valeur (on peut penser à un pointeur en tant qu'identifiant d'objet).
Passer un objet par référence
Les objets ne sont donc plus passés par valeur mais par référence. Il en résulte qu'une fois transmis à une fonction, un objet PHP 5 verra ses valeurs évoluer alors qu'en PHP 4 c'est une copie qui sera modifiée au sein de la fonction, l'objet originel restera inchangé.
En PHP 4 pour faire passer un objet en référence on pouvait le faire en préfixant la variable avec le signe « & ». Testez notre exemple Xxxx en enlevant le « & » dans la déclaration de la fonction « fctActionObjet() », vous verrez que dans un cas l'objet « $b » est modifié et dans l'autre il ne l'est pas (et pour cause la modification a été faite sur une copie temporaire).
Dupliquer un objet
Vu que les objets sont passés par référence en PHP 5, une méthode spécifique à été ajoutée afin de les dupliquer : clone().
Heureusement grâce au travail du PHPGroup ces changements cassent que peu la compatibilité et PHP interprète souvent le code PHP 4 pour le rendre compatible avec PHP 5.
Quelques informations supplémentaires :
- PHP5 rajoute aussi la visibilité objet : protected / private / public, les interfaces, les classes abstraites, l'autoloading de classes et le typage fort objet • Le mot clef « var » utilisé en PHP 4 fonctionne en PHP 5, il est traduit en « public ».
- Le constructeur de classe utilisé en PHP 4 (fonction ayant le même nom que la classe) fonctionne avec PHP 5.
- Il n'est pas nécessaire d'enlever les « & » qui étaient utilisés dans le code PHP 4 pour simuler le passage par référence. Vous aurez cependant un message d'erreur si vous êtes en mode « strict »