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)
?>