## Fonctions internes

PHP dispose de nombreuses fonctions et structures standards. Il y a aussi des fonctions qui requièrent des extensions spécifiques de PHP, sans lesquelles vous obtiendrez l'erreur fatale `undefined function`. Par exemple, pour utiliser les fonctions d'images, telles que imagecreatetruecolor(), vous aurez besoin du support de GD dans PHP. Ou bien, pour utiliser mysqli_connect(), vous aurez besoin de l'extension MySQLi. Il y a des fonctions de base qui sont incluses dans toutes les versions de PHP, telles que les fonctions de chaînes de caractères et les fonctions de variables. Utilisez phpinfo() ou get_loaded_extensions() pour savoir quelles sont les extensions qui sont compilées avec votre PHP. Notez aussi que de nombreuses extensions sont activées par défaut, et que le manuel PHP est compartimenté par extension. Voyez les chapitres de configuration, installation ainsi que les détails particuliers à chaque extension, pour savoir comment les mettre en place.

Lire et comprendre le prototype d'une fonction est décrit dans l'annexe Comment lire la définition d'une fonction (prototype). Il est important de comprendre ce qu'une fonction retourne, ou si une fonction travaille directement sur la valeur des paramètres fournis. Par exemple, str_replace() va retourner une chaîne modifiée, tandis que usort() travaille directement sur la variable passée en paramètre. Chaque page du manuel a des informations spécifiques sur chaque fonction, comme le nombre de paramètres, les évolutions de spécifications, les valeurs retournées en cas de succès ou d'échec, et la disponibilité en fonction des versions. Bien connaître ces différences, parfois subtiles, est crucial pour bien programmer en PHP.

> Note: Si les paramètres donnés à une fonction ne sont pas corrects, comme le fait de passer un tableau alors qu'une chaîne de caractères est attendue, la valeur retournée de la fonction est indéfinie. Dans ce cas, la fonction retournera la plupart du temps une valeur `null` mais ce n'est juste qu'une convention et ne peut être considéré comme une certitude. À partir de PHP 8.0.0, une exception TypeError est normalement lancée dans ce cas.

> Note:

> En mode coercitif, les types scalaires des fonctions internes sont nullables par défaut. À partir PHP 8.1.0, passer `null` à un paramètre de fonction interne qui n'est pas déclaré nullable est déconseillé et émet une notice de dépréciation en mode coercitif pour s'aligner sur le comportement des fonctions définies par l'utilisateur, où les types scalaires doivent être marqués comme nullables explicitement.

> Par exemple, la fonction strlen() attend du paramètre `$string` soit de type chaîne de caractères et non `null`. Pour des raisons historiques, PHP autorise le passage de `null` pour ce paramètre en mode coercitif. Le paramètre est alors implicitement converti en string, résultant en une valeur `""`. Noter qu'une TypeError est émise en mode strict.

> `<?php
> var_dump(strlen(null));
> // "Deprecated: Passing null to parameter #1 ($string) of type string is deprecated" as of PHP 8.1.0
> // int(0)
> var_dump(str_contains("foobar", null));
> // "Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated" as of PHP 8.1.0
> // bool(true)
> ?>`

### Voir aussi

- function_exists()
- l'index des fonctions
- get_extension_funcs()
- dl()