## Внутренние, или встроенные, функции

PHP поставляется с набором языковых конструкций и встроенных функций. Отдельные функции требуют, чтобы PHP собрали с конкретными модулями, иначе PHP генерирует фатальные ошибки о неизвестной функции. Например, чтобы использовать функции для работы с изображениями наподобие imagecreatetruecolor(), требуется собрать PHP с поддержкой модуля GD. Требуется собрать PHP с поддержкой модуля MySQLi, чтобы использовать функцию mysqli_connect(). Ядро каждой версии PHP включает функции обработки строк и функции для работы с переменными. Вызов функции phpinfo() или get_loaded_extensions() покажет, какие модули загрузил PHP. Часть модулей PHP включает по умолчанию. Документация описывает каждый модуль отдельно. О настройке PHP подробнее рассказывают разделы «Конфигурация», «Установка» и разделы, которые описывают отдельные модули.

Раздел «Как читать определения функции» объясняет, как читать и интерпретировать прототипы функций. Программист должен понимать, что возвращает функция, или как функция модифицирует аргументы, которые передали в функцию. Функция str_replace(), например, вернёт изменённую строку, тогда как функция usort() работает непосредственно с переменной, которую передали в функцию. О каждой функции рассказывает отдельная страница документации: описывает параметры, изменения поведения, значения, которые возвращает функция в случае успешного выполнения или когда возникает ошибка, доступность функции в одной или другой версии PHP. Знание важных и часто тонких различий — ключ к правильному PHP-коду.

> Замечание: Неясно, какое значение вернёт функция, если аргументы, которые передали в функцию, не соответствуют ожиданиям функции; например, передали массив (array) вместо строки (string). Скорее всего, функция вернёт `null`, но это только соглашение, на него нельзя полагаться. Начиная с PHP 8.0.0 в таком случае требуется выбрасывать исключение TypeError.

> Замечание:

> В нестрогом режиме типизации скалярные типы встроенных функций по умолчанию обнуляемы, — принимают значение `null`. Начиная с PHP 8.1.0 передача значения `null` в параметр встроенной функции, который не объявили обнуляемым, не рекомендуется, и в принудительном режиме выдаёт уведомление об устаревании, чтобы соответствовать поведению пользовательских функций, в которых требуется явно помечать скалярные типы как обнуляемые.

> Функция strlen(), например, ожидает, что параметр `$string` будет необнуляемой строкой (string). По историческим причинам в принудительном режиме PHP разрешает передавать значение `null` для этого параметра, и параметр неявно приводится к строке (string). В результате получается значение `""`. В строгом режиме выбрасывается исключение TypeError.

>     <?php

>     var_dump(strlen(null));
>     // "Deprecated: Passing null to parameter #1 ($string) of type string is deprecated" начиная с PHP 8.1.0
>     // int(0)

>     var_dump(str_contains("foobar", null));
>     // "Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated" начиная с PHP 8.1.0
>     // bool(true)

### Смотрите также

- function_exists()
- справочник функций
- get_extension_funcs()
- dl()

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open