Par défaut, PHP se montre conciliant : passer la chaîne "5" à une fonction attendant un entier fonctionne quand même, la valeur étant convertie au vol. Le typage strict désactive cette souplesse : une incompatibilité de type devient une erreur immédiate plutôt qu’une conversion silencieuse qui peut cacher un bug.
Activation en PHP
On l’active fichier par fichier avec la directive declare(strict_types=1); placée en toute première ligne exécutable du script, avant même l’ouverture d’une classe ou d’une fonction. Elle ne s’applique qu’aux appels de fonctions typées effectués depuis ce fichier, pas globalement au projet entier.
Dans WordPress
Le cœur de WordPress n’active pas le typage strict, pour préserver la compatibilité avec du code ancien qui jongle librement entre types. Dans une extension récente écrite entièrement en orienté objet, l’activer dès le départ aide à repérer tôt les erreurs de type, en particulier quand on manipule des données issues de $_POST ou d’une API externe, toujours reçues sous forme de chaînes.
Exemple
declare(strict_types=1);
function doublerPrix(float $prix): float {
return $prix * 2;
}
doublerPrix(19.90); // fonctionne
doublerPrix("19.90"); // TypeError en mode strict
Pièges fréquents
Introduire le typage strict sur un fichier existant qui recevait jusque-là des chaînes numériques depuis des formulaires ou une API tierce peut casser du code qui fonctionnait « par chance » grâce aux conversions automatiques. Il faut alors caster explicitement les valeurs, par exemple avec (int) ou (float), avant de les transmettre.