Modern PHP Engineering
Chapitre 0
00 — Introduction à PHP
00 — Introduction à PHP
Cours 00 — Introduction à PHP
00.1 Histoire de PHP
Les origines (1994-1997)
PHP a été créé en 1994 par Rasmus Lerdorf, un développeur groenlandais. À l'origine, PHP signifiait "Personal Home Page Tools". C'était un ensemble de scripts Perl/C pour suivre les visiteurs de son CV en ligne.
/* Premier code PHP connu — 1994 */
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Welcome to the Personal Home Page Tools\n");
return 0;
}
En 1995, Rasmus publie PHP/FI (Form Interpreter) version 2.0, qui permet déjà de traiter des formulaires HTML.
PHP 3 (1998)
Andi Gutmans et Zeev Suraski réécrivent complètement PHP en 1997. PHP 3 sort en juin 1998. C'est le premier PHP "généraliste", avec le slogan "PHP: Hypertext Preprocessor". Le Zend Engine voit le jour.
PHP 4 (2000)
Sortie en mai 2000, PHP 4 introduit :
- Zend Engine 1.0
- Sessions HTTP natives
- Support de plusieurs serveurs web (ISAPI, APXS)
- SUPER GLOBALS (_POST, $_SESSION)
PHP 5 (2004)
PHP 5 est une révolution :
- Zend Engine 2.0 avec un modèle objet complet
- PDO (PHP Data Objects) pour l'accès aux bases de données
- Exceptions (try/catch)
- Interfaces et classes abstraites
- __autoload (ancêtre de l'autoloading PSR-4)
PHP 7 (2015)
PHP 7, avec le Zend Engine 3.0 (PHPNG), double les performances :
- Return type declarations
- Scalar type declarations
- L'opérateur null coalescent
?? - L'opérateur spaceship
<=> - Anonymous classes
- Grouped use declarations
PHP 8.0 (2020)
PHP 8.0 est un nouveau bond :
- JIT (Just-In-Time compilation)
- Named arguments
- Attributes (annotations natives)
- Union types
- Match expression
- Nullsafe operator
?-> - Constructor property promotion
- str_contains(), str_starts_with(), str_ends_with()
PHP 8.1 (2021)
- Enums (natives)
- Fibers (programmation asynchrone)
- Readonly properties
- First-class callable syntax
- Array unpacking with string keys
PHP 8.2 (2022)
- Readonly classes
- Disjunctive Normal Form types
- Random extension (modernisée)
- Constants in traits
- Sensitive parameter value redaction
PHP 8.3 (2023)
- json_validate()
- Randomizer additions
- Override attribute
- Typed class constants
- Dynamic class constant fetch
mb_str_pad(),mb_trim(),mb_lcfirst(),mb_ucfirst()
PHP 8.4 (2024-2026)
- Property hooks
- Lazy objects
- Asymmetric visibility
#[Deprecated]attribute- Multibyte trim functions
- PDO Driver specific subclasses
- New array functions
00.2 Évolution des performances
| Version | Année | Perf (req/s) | Nouveauté majeure |
|---|---|---|---|
| PHP 4.0 | 2000 | ~500 | Zend Engine 1 |
| PHP 5.0 | 2004 | ~800 | Zend Engine 2 (OOP) |
| PHP 5.6 | 2014 | ~1500 | OPcache |
| PHP 7.0 | 2015 | ~4500 | Zend Engine 3 (PHPNG) |
| PHP 7.4 | 2019 | ~5000 | Preloading |
| PHP 8.0 | 2020 | ~5500 | JIT |
| PHP 8.4 | 2024 | ~6500 | JIT amélioré |
00.3 L'écosystème PHP moderne
Frameworks
| Framework | Type | Utilisation |
|---|---|---|
| Laravel | Full-stack MVC | 40%+ des sites PHP modernes |
| Symfony | Composants / Full-stack | Utilisé par Drupal, PrestaShop |
| CakePHP | Full-stack | Legacy, encore présent |
| Yii | Full-stack | Populaire en Asie |
| Laminas (Zend) | Composants | Migration enterprise |
Outils essentiels
# Composer — Gestionnaire de dépendances
composer require laravel/framework
# PHPUnit — Tests unitaires
vendor/bin/phpunit tests/
# PHP CS Fixer — Style de code
vendor/bin/php-cs-fixer fix src/
# PHPStan — Analyse statique
vendor/bin/phpstan analyse src/
# Psalm — Analyse statique
vendor/bin/psalm
Packages les plus importés
| Package | Downloads | Utilité |
|---|---|---|
| carbon/carbon | 1B+ | Dates |
| monolog/monolog | 1B+ | Logging |
| guzzlehttp/guzzle | 500M+ | HTTP client |
| doctrine/orm | 200M+ | ORM |
| phpunit/phpunit | 1B+ | Tests |
| vlucas/phpdotenv | 300M+ | .env files |
| spatie/laravel-permission | 100M+ | ACL |
| barryvdh/laravel-debugbar | 100M+ | Debug |
00.4 PHP dans le monde
Chiffres clés (2025-2026)
- 77% des sites web utilisent PHP (en partie)
- 52% des sites utilisent PHP pour le rendu serveur
- ~500 000 développeurs PHP dans le monde
- Top CMS : WordPress (43% du web), Drupal, Joomla
- Top e-commerce : Magento, WooCommerce, Sylius
- Salaire moyen (France 2025) :
- Junior : 35-42k€
- Confirmé : 45-60k€
- Senior : 60-80k€
- Architecte : 80-110k€
Entreprises qui utilisent PHP
| Type | Exemples |
|---|---|
| Réseaux sociaux | Facebook (Hack/HHVM), Pinterest |
| E-commerce | Etsy, Shopify, Magento |
| CMS | WordPress.com, Drupal.org |
| Cloud | Slack (anciennement), Wikipedia |
| SaaS | Mailchimp, PrestaShop |
00.5 Roadmap d'apprentissage
Niveau 1 — Fondations (Mois 1-2)
- Syntaxe PHP, types, structures de contrôle
- Programmation orientée objet
- Composer, autoloading PSR-4
- PDO, SQL
Niveau 2 — Web (Mois 3-4)
- MVC avec Laravel ou Symfony
- CRUD, migrations, templates
- Sessions, cookies, formulaires
- Tests unitaires PHPUnit
Niveau 3 — Avancé (Mois 5-6)
- APIs REST et GraphQL
- Queues, jobs, events
- Sécurité (OWASP)
- Déploiement, CI/CD
Niveau 4 — Architecture (Mois 7-8)
- Clean Architecture, DDD
- Design Patterns
- Performance, caching
- Architectures microservices
Exercices d'auto-évaluation
- Qu'est-ce qui distingue PHP 7 de PHP 5 en termes de performances ?
- Citez trois frameworks PHP modernes et leur cas d'usage.
- Quel est l'outil de gestion de dépendances en PHP ?
- Quelle version de PHP a introduit le JIT ?
- Estimez la part de PHP dans le web mondial.
Références
- php.net/manual/en/history.php
- wiki.php.net/rfc
- jetbrains.com/lp/devecosystem-2025/php
- packagist.org/statistics