В самом PHP содержится достаточно большое количество встроенных функций и языковых конструкций. Также есть функции, которые требуют, чтобы PHP был собран с определёнными модулями, в противном случае будут генерироваться фатальные ошибки, вызванные использованием неизвестной функции. Например, для того чтобы использовать функции для работы с изображениями, например, imagecreatetruecolor(), необходимо собрать PHP с поддержкой GD. Или же для того, чтобы воспользоваться функцией mysqli_connect(), необходима поддержка модуля MySQLi. Тем не менее, есть много встроенных функций, которые доступны всегда: например, функции обработки строк и функции для работы с переменными. Вызвав phpinfo() или get_loaded_extensions(), можно узнать, поддержка каких модулей есть в используемом PHP. Также следует учесть, что поддержка некоторых дополнительных модулей включена по умолчанию, и что сама документация к PHP разбита по модулям. Ознакомьтесь с разделами Конфигурация, Установка, а также с документацией непосредственно к дополнительным модулям для получения более детальной информации о том, как настроить PHP.
Более подробную информацию о том, как следует читать и интерпретировать прототипы функций, вы можете найти в разделе Как читать определения функции. Очень важно понимать, что возвращает функция, или как именно она модифицирует передаваемые аргументы. Например, функция str_replace() возвращает модифицированную строку, в то время как функция usort() работает с фактически переданной переменной. Каждая страница документации также содержит информацию, которая специфична для данной функции, например, информацию о передаваемых параметрах, изменениях в поведении, возвращаемых значениях в случае как удачного, так и неудачного выполнения, доступности функции в различных версиях. Знание и применение этих (порой даже незаметных) нюансов очень важно для написания корректного PHP-кода.
Замечание: Если в функцию передаются не те аргументы, которые она ожидает, например, массив (array) вместо строки (string), возвращаемое значение функции не определено. Скорее всего в этом случае будет возвращён
null
, но это просто соглашение, на него нельзя полагаться. Начиная с PHP 8.0.0, в этом случае должно быть выброшено исключение TypeError.
Замечание:
Скалярные типы для встроенных функций по умолчанию являются допускающими значение
null
в принудительном режиме. Начиная с PHP 8.1.0, передачаnull
в параметр встроенной функции, который не объявлен как допускающий значениеnull
, не рекомендуется и в принудительном режиме выдаётся уведомление об устаревании, чтобы соответствовать поведению пользовательских функций, где скалярные типы должны быть явно помечены как допускающие значениеnull
.Например, функция strlen() ожидает, что параметр
$string
будет строкой (string), не допускающей значениеnull
. По историческим причинам 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)
?>