En bref
Les fonctions PHP se déclarent avec le mot-clé function et bénéficient aujourd’hui de tout le confort moderne : types de paramètres et de retour vérifiés, valeurs par défaut, arguments nommés introduits par PHP 8, paramètres variadiques et fonctions fléchées compactes. Le langage vit entouré de son immense bibliothèque de fonctions natives, des milliers d’outils prêts à l’emploi pour les chaînes, les tableaux et les dates, dont la maîtrise progressive fait la productivité du développeur PHP. La portée y est plus stricte qu’ailleurs : une fonction ne voit pas les variables extérieures, sauf importation explicite, une sévérité qui pousse naturellement aux bonnes pratiques, tout par les paramètres, tout par le retour. Le PHP moderne a par ailleurs largement tourné la page des dérives historiques : le typage strict activable, les fonctions courtes et pures, l’organisation en classes et les standards communautaires ont fait du langage un citoyen sérieux, et les fonctions bien écrites sont la première marche vers les frameworks qui dominent l’écosystème.
PHP fait tourner une part énorme du web, et chaque page servie est une cascade de fonctions : les tiennes, et les milliers que le langage offre nativement. Écrire de bonnes fonctions PHP, typées, courtes et claires, est le geste qui sépare le script bricolé du code professionnel que les frameworks attendent. Voici le guide pratique complet, en prolongement de comprendre une fonction, du guide apprendre le PHP et du guide complet pour apprendre à coder.
La mécanique moderne : déclaration, types, retour
La déclaration garde la simplicité historique du langage : function calculerTtc(float $prixHt, float $taux): float { return $prixHt * (1 + $taux); }, le mot-clé function, un nom, des paramètres précédés du dollar rituel, et un corps qui renvoie avec return. Mais l’exemple dit surtout la modernité : les types y sont partout, float sur les paramètres, float après les deux-points pour le retour, et cette déclaration d’intentions, longtemps absente du PHP des origines, est devenue la norme du code sérieux. Le langage vérifie ces types à l’exécution, avec une nuance qui mérite d’être connue : par défaut, PHP convertit avec bienveillance ce qui peut l’être, une chaîne numérique passant pour un nombre, tandis que le mode strict, activé par une simple déclaration en tête de fichier, exige la conformité exacte et transforme les à-peu-près en erreurs franches ; les bases bien posées recommandent le strict dès l’apprentissage, précisément parce qu’il fait remonter les surprises au plus tôt. Les types énumèrent tout le nécessaire, nombres, chaînes, booléens, tableaux, objets, les unions à la barre verticale, et le point d’interrogation des valeurs optionnellement nulles, void couronnant les fonctions qui ne renvoient rien.
La portée PHP applique une règle plus stricte que la plupart des langages, et c’est une bénédiction déguisée : une fonction ne voit pas les variables définies au-dehors, point ; le fichier peut regorger de données, le corps de la fonction n’y accède pas, sauf importation explicite par le mot-clé global, que la profession entière s’accorde à éviter. Cette étanchéité force le bon geste dès le premier jour : tout entre par les paramètres, tout sort par le retour, la fonction devenant cette boîte honnête aux entrées et sorties déclarées qui se teste seule et se relit sans contexte. Elle donne aussi son sens au use des fonctions anonymes, qui importe nommément les variables capturées, un mécanisme qu’on retrouvera plus loin. Quant au retour, il est unique mais accueillant : une fonction PHP renvoie une seule valeur, qui peut être un tableau, l’idiome local pour rendre plusieurs résultats d’un coup, la déstructuration à la réception, crochets à gauche du signe égal, complétant élégamment le motif.
La signature accueillante : défauts, nommés, variadiques, fléchées
Les signatures PHP modernes offrent tout le confort attendu. Les valeurs par défaut d’abord, function saluer(string $nom = "visiteur"), qui rendent les paramètres optionnels, avec la règle de bon sens, les optionnels après les requis. Les arguments nommés ensuite, l’apport marquant de PHP 8 : appeler envoyerMail(destinataire: $email, copieCachee: true) nomme ce qu’il passe, s’affranchit de l’ordre, saute les défauts intermédiaires et se lit comme une phrase, un progrès décisif pour les fonctions à options multiples, que l’écosystème a adopté avec enthousiasme. Les variadiques encore, function total(float ...$montants), qui ramassent les arguments en tableau, et leur miroir, l’opérateur de dépliage qui éclate un tableau en arguments à l’appel, le duo couvrant les arités variables proprement. Ce confort s’accompagne d’un devoir de lecture : savoir déchiffrer une signature dans la documentation, types, défauts, références signalées par l’esperluette, est la compétence quotidienne, car le développeur PHP passe sa vie dans le manuel, et c’est un compliment.
Car voilà la singularité culturelle du langage : PHP vient avec des milliers de fonctions natives, une quincaillerie intégrée sans équivalent, chaînes découpées, tableaux triés et filtrés, dates formatées, fichiers lus, le tout sans rien installer. Cette abondance est une force à double tranchant, la fonction cherchée existe presque toujours, encore faut-il la trouver et il serait vain de tout mémoriser : la méthode raisonnable consiste à connaître les familles, les incontournables des chaînes et des tableaux en tête, et à chercher le reste à mesure, les exercices PHP installant naturellement ce répertoire. Restent les fonctions anonymes et leur version compacte : la closure classique, rangée dans une variable et capturant l’extérieur via use, et la fonction fléchée, fn($x) => $x * 2, qui capture automatiquement et brille dans les callbacks des fonctions de tableaux, le trio filtrer, transformer, réduire donnant au PHP moderne des allures fonctionnelles élégantes. Le conseil d’usage rejoint celui des autres langages : fléchées pour les petites transformations passées en argument, fonctions nommées pour tout ce qui structure.
Bonnes pratiques et chemin vers le PHP professionnel
Les bonnes pratiques tiennent en quelques disciplines qui, ensemble, changent la catégorie de ton code. Le typage systématique d’abord, paramètres et retours, mode strict activé : chaque type déclaré est un bug intercepté et une documentation gratuite. La responsabilité unique ensuite, servie par des noms verbes en camelCase selon les standards communautaires, calculerRemise, envoyerNotification, l’art transversal de bien nommer ; la fonction qui valide, enregistre et affiche est le symptôme classique du PHP historique, et son découpage le premier refactoring à pratiquer. La gestion d’erreurs moderne encore : les exceptions levées et attrapées, plutôt que les retours ambigus, faux ou nul, qui firent les heures sombres du langage, la démarche étant celle de la gestion des exceptions. Et la pureté autant que possible enfin : les fonctions qui calculent sans toucher au monde se testent et se composent, les effets, base de données, session, affichage, se concentrant dans des fonctions dédiées aux frontières, une hygiène qui prépare directement aux architectures des frameworks.
Car c’est le débouché naturel de ce guide : les fonctions bien écrites sont la première marche du PHP professionnel, celui des classes et des frameworks. Tes fonctions deviendront méthodes en rejoignant les classes et objets qui organisent tout code PHP sérieux, et tu retrouveras alors chaque acquis, types, signatures, pureté, au service d’architectures plus vastes, celles des frameworks majeurs de l’écosystème, dont les contrôleurs, services et middlewares ne sont que des fonctions disciplinées à grande échelle ; le monde des systèmes de gestion de contenu, détaillé dans WordPress ou coder son site, repose de même sur des fonctions, les célèbres hooks n’étant que des callbacks assumés. D’ici là, le terrain d’entraînement idéal reste le projet concret, un formulaire de contact proprement découpé, validation, traitement, réponse, chaque étape sa fonction, valant tous les exposés : car en PHP comme ailleurs, on n’apprend pas les fonctions en les lisant, on les apprend en refusant, une fois pour toutes, d’écrire deux fois le même code.
Questions fréquentes
Comment déclarer une fonction en PHP moderne ?
Avec function, des paramètres typés et un type de retour : function calculerTtc(float $prixHt, float $taux): float. Le mode strict, activé en tête de fichier, transforme les conversions approximatives en erreurs franches et fait consensus dans le code professionnel.
Une fonction PHP peut-elle accéder aux variables extérieures ?
Non, et c’est une spécificité salutaire : la portée est étanche, tout doit entrer par les paramètres et sortir par le retour. Le mot-clé global existe mais la profession l’évite ; les fonctions anonymes, elles, importent explicitement leurs captures via use.
Que sont les arguments nommés de PHP 8 ?
La possibilité d’appeler une fonction en nommant ses arguments, envoyerMail(destinataire: $email, copieCachee: true) : l’ordre devient libre, les défauts intermédiaires se sautent, et l’appel se lit comme une phrase. Un progrès majeur pour les fonctions à nombreuses options.
Faut-il mémoriser les milliers de fonctions natives de PHP ?
Non : on retient les familles et les incontournables des chaînes et des tableaux, et on cherche le reste dans le manuel à mesure des besoins. La vraie compétence est de savoir lire une signature, types, défauts, références, et de vérifier avant de réinventer.
Sources
Cet article a une vocation informative et pédagogique. Les plateformes, outils et formations éventuellement cités le sont à titre d’exemple ; compare plusieurs options avant de t’engager ou de payer.

