PHP 8.4.0 RC4 available for testing

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

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)

?>

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top