PHP: полный мануал с примерами, функциями и ООП
Практический мануал PHP: от переменных и читаемого кода до безопасных форм, интеграций, базы данных и ООП на примере магазина. Учебный маршрут, поиск функций, подробные примеры, разбор ошибок и исходники для скачивания.

Дерево руководства
Глава 465 · Официальная база → практическое применение
Каталоги runtime: расширения, алиасы, зарезервированные слова и токены
Полные официальные точки входа для поиска модуля или имени, дополненные правилами проверки установленного окружения.
Расширения PHP: как устроен каталог
Каталог расширений отвечает на три разных вопроса: как называется модуль, где он поддерживается и к какой предметной области относится. Наличие страницы в руководстве не доказывает, что модуль установлен на конкретном сервере.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Приложение классифицирует по нескольким критериям более 150 модулей, которые задокументировали в PHP-руководстве.
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
This appendix categorizes more than 150 extensions documented in the PHP Manual by several criteria.
<?php
var_dump(function_exists('strlen'));
var_dump(extension_loaded('date'));
var_dump(extension_loaded('extension-that-does-not-exist'));
Ожидаемый результат
bool(true)
bool(true)
bool(false)
Проверка полезна для необязательной возможности. Если модуль обязателен для корректности сервиса, лучше остановить запуск с понятной диагностикой.
Расширения по алфавиту
Каталог расширений отвечает на три разных вопроса: как называется модуль, где он поддерживается и к какой предметной области относится. Наличие страницы в руководстве не доказывает, что модуль установлен на конкретном сервере.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
Расширения по принадлежности
Каталог расширений отвечает на три разных вопроса: как называется модуль, где он поддерживается и к какой предметной области относится. Наличие страницы в руководстве не доказывает, что модуль установлен на конкретном сервере.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Модули ядра
Это не настоящие модули. Они составляют неотъемлемую часть ядра PHP, которую невозможно исключить параметрами компиляции при сборке двоичного файла PHP.
Модули комплекта
Следующие модули входят в дистрибутив PHP.
Внешние модули
Следующие модули входят в дистрибутив PHP, но для их компиляции потребуются внешние библиотеки.
PECL-модули
Модули доступны по адресу » PECL. Для работы модулей иногда требуются внешние библиотеки. Репозиторий PECL включает и другие модули, описание которых пока недоступно в PHP-руководстве.
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
Core Extensions
These are not actual extensions. They are part of the PHP core and cannot be left out of a PHP binary with compilation options.
Bundled Extensions
These extensions are bundled with PHP.
External Extensions
These extensions are bundled with PHP but in order to compile them, external libraries will be needed.
PECL Extensions
These extensions are available from » PECL. They may require external libraries. More PECL extensions exist but they are not documented in the PHP manual yet.
Расширения по состоянию поддержки
Каталог расширений отвечает на три разных вопроса: как называется модуль, где он поддерживается и к какой предметной области относится. Наличие страницы в руководстве не доказывает, что модуль установлен на конкретном сервере.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Этот раздел перечисляет модули, которые не предназначены для производственной среды: они либо слишком «старые» (устаревшие), либо слишком «новые» (экспериментальные).
Устаревшие модули
Эти модули объявили устаревшими, обычно в пользу других модулей.
Экспериментальные модули
Поведение этих модулей, включая названия их функций и всё остальное, что о них задокументировали, изменяется в новых выпусках PHP без уведомления. Ответственность за работу с экспериментальными модулями лежит на разработчике.
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
This part lists extensions not intended for the production use — they are either too "old" (deprecated) or "new" (experimental).
Deprecated Extensions
These extensions have been deprecated usually in the favor of some other extensions.
Experimental Extensions
The behaviour of these extensions — including the names of their functions and anything else documented about these extensions — may change without notice in a future release of PHP. Use these extensions at your own risk.
Алиасы функций: старое имя и канонический вызов
Алиас вызывает тот же механизм под другим именем, но старое имя ухудшает поиск и может исчезнуть. При поддержке наследуемого проекта сначала находят каноническое имя, проверяют доступность и постепенно заменяют алиас вместе с тестами.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
В PHP много функций, у которых больше одного имени. Иногда нельзя предпочесть одно имя другому, например, функции is_int() и is_integer() одинаково правильны. В то же время имена других функций изменились из-за чистки API или по другой причине, а старые имена сохраняются в целях обратной совместимости. По большей части лучше избегать псевдонимов в коде, поскольку псевдонимы появляются из-за устаревания или изменения имени основной функции, и появление псевдонима в коде приведёт к невозможности перенести файл скрипта. Этот список создали в помощь тем, кто обновляет старые скрипты до нового синтаксиса.
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
There are quite a few functions in PHP which you can call with more than one name. In some cases there is no preferred name among the multiple ones, is_int() and is_integer() are equally good for example. However there are functions which changed names because of an API cleanup or some other reason and the old names are only kept as aliases for backward compatibility. It is usually a bad idea to use these kind of aliases, as they may be bound to obsolescence or renaming, which will lead to unportable script. This list is provided to help those who want to upgrade their old scripts to newer syntax.
<?php
$parts = ['north', 'shop'];
echo join('/', $parts), "\n";
echo implode('/', $parts), "\n";
Ожидаемый результат
north/shop
north/shop
join является алиасом implode. В новом коде единое каноническое имя облегчает поиск; замена старого имени сопровождается тестом результата.
Зарезервированные слова и имена
Зарезервированное слово уже имеет значение для парсера или платформы. Оно может быть допустимо в одной позиции и запрещено в другой, поэтому имя проверяют в реальном синтаксическом контексте и в минимальной поддерживаемой версии.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
- Список ключевых слов
- Предопределённые классы
- Предопределённые константы
- Список прочих зарезервированных слов
Раздел содержит список идентификаторов, которые разработчики PHP определили для внутренних целей языка. Зарезервированные идентификаторы нельзя указывать в скриптах, если только явно не указали обратное. В состав списков входят ключевые слова, предопределённые переменные, константы и названия классов. Списки не претендуют на полноту — команда переводчиков дополняет их по мере выхода новых версий языка.
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
The following is a listing of predefined identifiers in PHP. None of the identifiers listed here should be used as identifiers in any of your scripts unless explicitly noted otherwise. These lists include keywords and predefined variables, constant, and class names. These lists are neither exhaustive nor complete.
Предопределённые классы
Зарезервированное слово уже имеет значение для парсера или платформы. Оно может быть допустимо в одной позиции и запрещено в другой, поэтому имя проверяют в реальном синтаксическом контексте и в минимальной поддерживаемой версии.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Раздел перечисляет названия стандартных предопределённых классов; модули языка определяют дополнительные классы, которые описывает справка модулей.
Стандартные определённые классы
Следующие классы определили вместе со стандартным набором функций ядра PHP.
- Directory
Создаётся функцией dir().
- stdClass
Пустой класс общего назначения, созданный в результате преобразования в объект или различных стандартных функций.
- __PHP_Incomplete_Class
Объект неполного класса создают функции наподобие unserialize().
- Exception
- ErrorException
- php_user_filter
- Closure
Предопределённый окончательный класс Closure, используется для внутренней реализации анонимных функций.
- Generator
Предопределённый окончательный класс Generator, используется для представления генераторов.
- ArithmeticError
- AssertionError
- DivisionByZeroError
- Error
- Throwable
- ParseError
- TypeError
Специальные классы
Следующие идентификаторы нельзя указывать как название класса, поскольку разработчики языка зарезервировали эти слова для внутренних целей языка.
- self
- static
- parent
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
This section lists standard predefined classes. Miscellaneous extensions define other classes which are described in their reference.
Standard Defined Classes
These classes are defined in the standard set of functions included in the PHP build.
- Directory
Created by dir().
- stdClass
A generic empty class created as a result of typecasting to object or various standard functions.
- __PHP_Incomplete_Class
Possibly created by unserialize().
- Exception
- ErrorException
- php_user_filter
- Closure
The predefined final class Closure is used for representing anonymous functions.
- Generator
The predefined final class Generator is used for representing generators.
- ArithmeticError
- AssertionError
- DivisionByZeroError
- Error
- Throwable
- ParseError
- TypeError
Special classes
Following identifiers may not be used as a class name as they have special purpose.
- self
- static
- parent
Предопределённые константы
Зарезервированное слово уже имеет значение для парсера или платформы. Оно может быть допустимо в одной позиции и запрещено в другой, поэтому имя проверяют в реальном синтаксическом контексте и в минимальной поддерживаемой версии.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Предопределённые константы ядра
Эти константы определяет ядро PHP. Сюда входят PHP, движок Zend и SAPI-модули.
PHP_VERSION(string)Текущая версия PHP в виде строки в формате "major.minor.release[extra]".
PHP_MAJOR_VERSION(int)Текущая «мажорная» версия PHP в виде целого числа (например, int(5) для версии "5.2.7-extra").
PHP_MINOR_VERSION(int)Текущая «минорная» версия PHP в виде целого числа. Папример: int(2) для версии "5.2.7-extra".
PHP_RELEASE_VERSION(int)Текущая «точечная» версия PHP в виде целого числа. Например: int(7) для версии "5.2.7-extra".
PHP_VERSION_ID(int)Текущая версия PHP в виде целого числа. Например: int(50207) для версии "5.2.7-extra". Целочисленные представления версий проще сравнивать.
PHP_EXTRA_VERSION(string)Текущая «дополнительная» версия PHP в виде строки. Например: "-extra" для версии "5.2.7-extra". Поставщики дистрибутивов часто добавляют такой суффикс, чтобы указать версию пакета.
PHP_BUILD_DATE(string)Дата и время сборки PHP в формате
"M d Y H:i:s". Константа доступна с PHP 8.5.0.PHP_BUILD_PROVIDER(string)Поставщик PHP-сборки. Константа доступна с PHP 8.5.0.
Замечание:
Константа доступна в PHP-сборке, только если константу установили при сборке из исходного кода и указали значение при конфигурации.
ZEND_THREAD_SAFE(bool)Указывает, потокобезопасна ли текущая сборка PHP.
Замечание:
Константа недоступна в сборках PHP для Windows.
ZEND_DEBUG_BUILD(bool)Указывает, собрали ли PHP для отладки.
PHP_ZTS(bool) Псевдоним константыZEND_THREAD_SAFE.Указывает, потокобезопасна ли текущая сборка PHP.
PHP_DEBUG(bool) Псевдоним константыZEND_DEBUG_BUILD.Указывает, собрали ли PHP для отладки.
DEBUG_BACKTRACE_PROVIDE_OBJECT(int)Заполняет индекс «объекта».
DEBUG_BACKTRACE_IGNORE_ARGS(int)Указывает на невключение информации об аргументах функций в трассировку стека.
PHP_MAXPATHLEN(int)Максимальная длина файловых имён (включая путь), которую поддерживает сборка PHP.
PHP_OS(string)Операционная система, под которую собирался PHP.
PHP_OS_FAMILY(string)Семейство операционных систем, для которых собрали PHP. Любое из следующих значений:
"Windows","BSD","Darwin","Solaris","Linux"или"unknown". Константа появилась в PHP 7.2.0.PHP_SAPI(string)API-интерфейс сервера PHP-сборки. Смотрите также php_sapi_name().
PHP_EOL(string)Корректный символ конца строки (End Of Line) для платформы.
PHP_INT_MAX(int)Максимальное целое число, которое поддерживает PHP-сборка. Обычно это int(2147483647) в 32-битных системах и int(9223372036854775807) в 64-битных.
PHP_INT_MIN(int)Минимальное целое число, которое поддерживает сборка PHP. Обычно это int(-2147483648) в 32-битных системах и int(-9223372036854775808) в 64-битных. Обычно PHP_INT_MIN === ~PHP_INT_MAX.
PHP_INT_SIZE(int)Размер целого числа в байтах в сборке PHP.
PHP_FLOAT_DIG(int)Количество десятичных цифр, которое PHP умеет округлять до числа с плавающей точкой (float) и обратно без потери точности. Константа появилась в PHP 7.2.0.
PHP_FLOAT_EPSILON(float)Наименьшее представимое положительное число x, для которого верно равенство
x + 1.0 != 1.0. Константа появилась в PHP 7.2.0.PHP_FLOAT_MIN(float)Наименьшее представимое положительное число с плавающей точкой float. Указывают
- PHP_FLOAT_MAX, когда требуется наименьшее представимое отрицательное число с плавающей точкой float. Константа появилась в PHP 7.2.0.PHP_FLOAT_MAX(float)Максимальное представимое число с плавающей точкой float. Константа появилась в PHP 7.2.0.
DEFAULT_INCLUDE_PATH(string)PEAR_INSTALL_DIR(string)PEAR_EXTENSION_DIR(string)PHP_EXTENSION_DIR(string)Каталог по умолчанию, в котором PHP будет искать модули для динамической загрузки, если только путь не переопределили директивой extension_dir. По умолчанию —
PHP_PREFIX(илиPHP_PREFIX . "\\ext"в Windows).PHP_PREFIX(string)Значение --prefix установили при конфигурации. В ОС Windows при конфигурации установили значение --with-prefix.
PHP_BINDIR(string)Значение --bindir установили при конфигурации. В Windows при конфигурации установили значение --with-prefix.
PHP_SBINDIR(string)Значение --sbindir установили при конфигурации. В ОС Windows при конфигурации установили значение --with-prefix. Константа доступна с PHP 8.4.0.
PHP_BINARY(string)Указывает путь к исполняемым PHP-файлам во время выполнения скрипта.
PHP_MANDIR(string)Указывает, куда установили manpages-страницы руководства.
PHP_LIBDIR(string)PHP_DATADIR(string)PHP_SYSCONFDIR(string)PHP_LOCALSTATEDIR(string)PHP_CONFIG_FILE_PATH(string)PHP_CONFIG_FILE_SCAN_DIR(string)PHP_SHLIB_SUFFIX(string)Суффикс разделяемых (динамических) модулей платформы-сборки, например, "s" для большей части Unix-систем или "dll" для ОС Windows.
PHP_FD_SETSIZE(int)Максимальное количество файловых дескрипторов для системных вызовов. Константа появилась в PHP 7.1.0.
E_ERROR(int)E_WARNING(int)E_PARSE(int)E_NOTICE(int)E_CORE_ERROR(int)E_CORE_WARNING(int)E_COMPILE_ERROR(int)E_COMPILE_WARNING(int)E_USER_ERROR(int)E_USER_WARNING(int)E_USER_NOTICE(int)E_RECOVERABLE_ERROR(int)E_DEPRECATED(int)E_USER_DEPRECATED(int)E_ALL(int)E_STRICT(int)__COMPILER_HALT_OFFSET__(int)true(bool)Смотрите раздел «Логические значения».
false(bool)Смотрите раздел «Логические значения».
null(null)Смотрите Null.
PHP_WINDOWS_EVENT_CTRL_C(int)Событие ОС Windows, которое вызывается сочетанием клавиш CTRL +C. Константа появилась в PHP 7.4.0 и доступна только в ОС Windows.
PHP_WINDOWS_EVENT_CTRL_BREAK(int)Событие ОС Windows, которое вызывается сочетанием клавиш CTRL +BREAK. Константа появилась в PHP 7.4.0 и доступна только в ОС Windows.
PHP_CLI_PROCESS_TITLE(bool)Указывает, доступны ли настройка и получение названия процесса. Константа доступна только в CLI-режиме SAPI-интерфейса.
STDERR(resource)Уже открытый поток для стандартного вывода ошибок
stderr. Константа доступна только в CLI-режиме SAPI-интерфейса.STDIN(resource)Уже открытый поток для стандартного ввода
stdin. Константа доступна только в CLI-режиме SAPI-интерфейса.STDOUT(resource)Уже открытый поток для стандартного вывода
stdout. Константа доступна только в CLI-режиме SAPI-интерфейса.
См. также: «Магические константы».
Стандартные предопределённые константы
Все константы модулей, входящих в состав ядра, теперь определены в PHP по умолчанию.
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
Core Predefined Constants
These constants are defined by the PHP core. This includes PHP, the Zend engine, and SAPI modules.
PHP_VERSION(string)The current PHP version as a string in "major.minor.release[extra]" notation.
PHP_MAJOR_VERSION(int)The current PHP "major" version as an integer (e.g., int(5) from version "5.2.7-extra").
PHP_MINOR_VERSION(int)The current PHP "minor" version as an integer (e.g., int(2) from version "5.2.7-extra").
PHP_RELEASE_VERSION(int)The current PHP "release" version as an integer (e.g., int(7) from version "5.2.7-extra").
PHP_VERSION_ID(int)The current PHP version as an integer, useful for version comparisons (e.g., int(50207) from version "5.2.7-extra").
PHP_EXTRA_VERSION(string)The current PHP "extra" version as a string (e.g., '-extra' from version "5.2.7-extra"). Often used by distribution vendors to indicate a package version.
PHP_BUILD_DATE(string)The date and time when PHP was built, in
"M d Y H:i:s"format. Available as of PHP 8.5.0.PHP_BUILD_PROVIDER(string)The provider who built PHP. Available as of PHP 8.5.0.
Note:
This constant may not be available in all builds of PHP. (e.g., not set when building from source without specifying a value during configuration).
ZEND_THREAD_SAFE(bool)Indicates whether the current build of PHP is thread safe.
ZEND_DEBUG_BUILD(bool)Indicates whether the current build of PHP is a debug build.
PHP_ZTS(bool) Alias ofZEND_THREAD_SAFEIndicates whether the current build of PHP is thread safe.
PHP_DEBUG(bool) Alias ofZEND_DEBUG_BUILDIndicates whether the current build of PHP is a debug build.
DEBUG_BACKTRACE_PROVIDE_OBJECT(int)Populate the "object" index.
DEBUG_BACKTRACE_IGNORE_ARGS(int)Don't include the argument information for functions in the stack trace.
PHP_MAXPATHLEN(int)The maximum length of filenames (including path) supported by this build of PHP.
PHP_OS(string)The operating system PHP was built for.
PHP_OS_FAMILY(string)The operating system family PHP was built for. One of
'Windows','BSD','Darwin','Solaris','Linux'or'Unknown'. Available as of PHP 7.2.0.PHP_SAPI(string)The Server API for this build of PHP. See also php_sapi_name().
PHP_EOL(string)The correct 'End Of Line' symbol for this platform.
PHP_INT_MAX(int)The largest integer supported in this build of PHP. Usually int(2147483647) in 32 bit systems and int(9223372036854775807) in 64 bit systems.
PHP_INT_MIN(int)The smallest integer supported in this build of PHP. Usually int(-2147483648) in 32 bit systems and int(-9223372036854775808) in 64 bit systems. Usually, PHP_INT_MIN === ~PHP_INT_MAX.
PHP_INT_SIZE(int)The size of an integer in bytes in this build of PHP.
PHP_FLOAT_DIG(int)Number of decimal digits that can be rounded into a float and back without precision loss. Available as of PHP 7.2.0.
PHP_FLOAT_EPSILON(float)Smallest representable positive number x, so that
x + 1.0 != 1.0. Available as of PHP 7.2.0.PHP_FLOAT_MIN(float)Smallest representable positive floating point number. If you need the smallest representable negative floating point number, use
- PHP_FLOAT_MAX. Available as of PHP 7.2.0.PHP_FLOAT_MAX(float)Largest representable floating point number. Available as of PHP 7.2.0.
DEFAULT_INCLUDE_PATH(string)PEAR_INSTALL_DIR(string)PEAR_EXTENSION_DIR(string)PHP_EXTENSION_DIR(string)The default directory where to look for dynamically loadable extensions (unless overridden by extension_dir). Defaults to
PHP_PREFIX(orPHP_PREFIX . "\\ext"on Windows).PHP_PREFIX(string)The value --prefix was set to at configure. On Windows, it is the value --with-prefix was set to at configure.
PHP_BINDIR(string)The value --bindir was set to at configure. On Windows, it is the value --with-prefix was set to at configure.
PHP_SBINDIR(string)The value --sbindir was set to at configure. On Windows, it is the value --with-prefix was set to at configure. Available as of PHP 8.4.0.
PHP_BINARY(string)Specifies the PHP binary path during script execution.
PHP_MANDIR(string)Specifies where the manpages were installed into.
Note:
This constant is not present on Windows builds of PHP.
PHP_LIBDIR(string)PHP_DATADIR(string)PHP_SYSCONFDIR(string)PHP_LOCALSTATEDIR(string)PHP_CONFIG_FILE_PATH(string)PHP_CONFIG_FILE_SCAN_DIR(string)PHP_SHLIB_SUFFIX(string)The build-platform's shared library suffix, such as "so" (most Unixes) or "dll" (Windows).
PHP_FD_SETSIZE(int)The maximum number of file descriptors for select system calls. Available as of PHP 7.1.0.
E_ERROR(int)E_WARNING(int)E_PARSE(int)E_NOTICE(int)E_CORE_ERROR(int)E_CORE_WARNING(int)E_COMPILE_ERROR(int)E_COMPILE_WARNING(int)E_USER_ERROR(int)E_USER_WARNING(int)E_USER_NOTICE(int)E_RECOVERABLE_ERROR(int)E_DEPRECATED(int)E_USER_DEPRECATED(int)E_ALL(int)E_STRICT(int)Error reporting constants. This constant is unused, and has been deprecated as of PHP 8.4.0.
__COMPILER_HALT_OFFSET__(int)true(bool)See Booleans.
false(bool)See Booleans.
null(null)See Null.
PHP_WINDOWS_EVENT_CTRL_C(int)A Windows CTRL +C event. Available as of PHP 7.4.0 (Windows only).
PHP_WINDOWS_EVENT_CTRL_BREAK(int)A Windows CTRL +BREAK event. Available as of PHP 7.4.0 (Windows only).
PHP_CLI_PROCESS_TITLE(bool)Indicates whether the setting and getting of the process title is available. Available only under the CLI SAPI.
STDERR(resource)An already opened stream to
stderr. Available only under the CLI SAPI.STDIN(resource)An already opened stream to
stdin. Available only under the CLI SAPI.STDOUT(resource)An already opened stream to
stdout. Available only under the CLI SAPI.
See also: Magic constants.
Standard Predefined Constants
All constants from core extensions are defined in PHP by default.
Ключевые слова PHP
Зарезервированное слово уже имеет значение для парсера или платформы. Оно может быть допустимо в одной позиции и запрещено в другой, поэтому имя проверяют в реальном синтаксическом контексте и в минимальной поддерживаемой версии.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Ключевые слова — элементы синтаксиса языка PHP.
Отдельные слова похожи на функции, другие — на константы, но корректный термин для ключевых слов — языковые конструкции.
Следующие ключевые слова нельзя указывать как названия классов, функций или глобальных констант,
но правила языка разрешают указывать ключевые слова как названия свойств, констант, методов
классов, интерфейсов, трейтов и перечислений, с оговоркой, слово class
нельзя указывать как название константы.
* Ключевое слово readonly — допустимое название функции.
| __CLASS__ | __DIR__ | __FILE__ | __FUNCTION__ | __LINE__ |
| __METHOD__ | __PROPERTY__ | __NAMESPACE__ | __TRAIT__ |
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
These words have special meaning in PHP. Some of them represent things
which look like functions, some look like constants, and so on - but
they're not, really: they are language constructs.
The following words cannot be used as constants, class names, or function names.
They are, however, allowed as property, constant, and
method names of classes, interfaces, traits and enums, except that
class may not be used as constant name.
* readonly may be used as function name.
| __CLASS__ | __DIR__ | __FILE__ | __FUNCTION__ | __LINE__ |
| __METHOD__ | __PROPERTY__ | __NAMESPACE__ | __TRAIT__ |
Другие зарезервированные слова
Зарезервированное слово уже имеет значение для парсера или платформы. Оно может быть допустимо в одной позиции и запрещено в другой, поэтому имя проверяют в реальном синтаксическом контексте и в минимальной поддерживаемой версии.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Следующие слова нельзя указывать как названия классов, интерфейсов, трейтов или перечислений. До PHP 8.0 слова из следующего списка запрещалось указывать как идентификаторы пространств имён.
| parent | self | int | float |
| bool | string | true | false |
| null | void (с PHP 7.1) | iterable (с PHP 7.1) | object (с PHP 7.2) |
| mixed (с PHP 8.0) | never (с PHP 8.1) | array (с PHP 8.5) | callable (с PHP 8.5) |
Следующий список содержит мягко зарезервированные слова. Они всё ещё могут использоваться в качестве имён классов, интерфейсов, трейтов и перечислений, но использовать их крайне не рекомендуется, поскольку они могут стать полноценно зарезервированными в будущем.
| enum | resource | numeric |
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
The following words cannot be used to name a class, interface, trait or enum. Prior to PHP 8.0, they are also prohibited from being used in namespaces.
| parent | self | int | float |
| bool | string | true | false |
| null | void (as of PHP 7.1) | iterable (as of PHP 7.1) | object (as of PHP 7.2) |
| mixed (as of PHP 8.0) | never (as of PHP 8.1) | array (as of PHP 8.5) | callable (as of PHP 8.5) |
The following list of words have had soft reservations placed on them. Whilst they may still be used as class, interface, trait and enum names, usage of them is highly discouraged since they may be used in future versions of PHP.
| enum | resource | numeric |
Типы resource и их жизненный цикл
resource — дескриптор доступа к внешнему объекту: файлу, потоку или процессу. Это не само содержимое. У него есть владелец и момент закрытия; некоторые расширения в новых версиях заменили resource объектами.
Таблица ниже — каталог типов дескрипторов по расширениям. Сначала найдите функцию, которая создаёт значение, затем функцию закрытия и только после этого операции чтения/записи. В новых версиях часть прежних resource заменена объектами; поэтому проверяют страницу конкретной функции, а не полагаются на старый is_resource().
Полный официальный договор страницы — большой справочник, раскрывается по запросу
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
Приложение приводит список функций, которые создают, используют или уничтожают ресурсы PHP. Относится ли переменная к типу ресура, определяют функцией is_resource(), а функция get_resource_type() помогает получить тип ресурса.
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
The following is a list of functions which create, use or destroy PHP resources. The function is_resource() can be used to determine if a variable is a resource and get_resource_type() will return the type of resource it is.
Токены парсера PHP
Официальный узел сохранён как самостоятельная точка полного дерева. Ниже показано, какой вопрос он закрывает и как использовать его вместе с учебными главами, не принимая один заголовок за доказательство поддержки в runtime.
Токен — результат лексического разбора исходника, а не готовая команда PHP. Каталог ниже группирует константы парсера и объясняет, какой фрагмент они обозначают. Код анализатора сравнивает именованные константы T_*; числовые ID между версиями не являются стабильным договором.
Полный официальный договор страницы
Ниже сохранён официальный русский текст и структура из зафиксированного архива PHP Manual. Отдельные ещё не переведённые страницы официального русского архива могут оставаться на английском.
PHP-код внутренне представляется токенами.
Фрагмент кода, который содержит недопустимую последовательность токенов,
приводит к ошибкам наподобие
Parse error: syntax error, unexpected token "==", expecting "(" in script.php on line 10.",
где токен == внутренне представляется как T_IS_EQUAL.
Следующая таблица перечисляет все токены. Токены также доступны как PHP-константы.
Замечание: Константы семейства T_*
Значения констант семейства T_* автоматически генерируются на основе базовой инфраструктуры синтаксического анализатора PHP. Поэтому конкретное значение токена иногда изменяется между двумя версиями PHP. И поэтому для совместимости между версиями PHP код пишут так, чтобы он не зависел от исходных значений констант семейства T_*, которые взяли из версии PHP X.Y.Z.
Пользователи определяют неопределённые константы семейства T_* значениями больших чисел наподобие
10_000, чтобы использовать константы в разных версиях PHP. При этом выбирают стратегию, которая сработает как с версиями PHP, в которых разработчики языка определили значения констант семейства T_*, так и с версиями PHP, в которых константы не определяли.<?php // До PHP 7.4.0 язык не определял константу T_FN defined('T_FN') || define('T_FN', 10001); ?>
Смотрите также описание функции token_name().
Нормативный английский оригинал из frozen baseline
Этот слой сохраняет полный договор, если перевод отстаёт. Источник: английский нормативный оригинал.
Various parts of the PHP language are represented internally by tokens.
A code snippet that contains an invalid sequence of tokens may lead to errors like
Parse error: syntax error, unexpected token "==", expecting "(" in script.php on line 10."
where token == is internally represented by T_IS_EQUAL.
The following table lists all tokens. They are also available as PHP constants.
Note: Usage of T_* constants
T_* constants values are automatically generated based on PHP's underlying parser infrastructure. This means that the concrete value of a token may change between two PHP versions. This means that your code should never rely directly on the original T_* values taken from PHP version X.Y.Z, to provide some compatibility across multiple PHP versions.
To make use of T_* constants across multiple PHP versions, undefined constants may be defined by the user (using big numbers like
10000) with an appropriate strategy that will work with both PHP versions and T_* values.<?php // Prior to PHP 7.4.0, T_FN is not defined. defined('T_FN') || define('T_FN', 10001); ?>
See also token_name().
Каталог сообщает имя; runtime подтверждает доступность
Индекс расширений помогает найти официальную книгу, список алиасов — канонический вызов, reserved — ограничения для имён, resource — тип открытого дескриптора, tokens — взгляд парсера на исходник. Перед выполнением всё равно проверяют версию и загруженные модули. В новом коде предпочитают канонические имена и не строят бизнес-логику на номере токена, который может меняться между версиями.
Источники и обсуждения
- PHP Manual: Extension List/Categorization
- PHP Manual: Alphabetical
- PHP Manual: Membership
- PHP Manual: State
- PHP Manual: List of Function Aliases
- PHP Manual: List of Reserved Words
- PHP Manual: Predefined Classes
- PHP Manual: Predefined Constants
- PHP Manual: List of Keywords
- PHP Manual: List of other reserved words
- PHP Manual: List of Resource Types
- PHP Manual: List of Parser Tokens
Код и руководство с собой
Скачайте самостоятельные примеры с исходными данными, инструкциями и ожидаемыми результатами. Примеры HTTP и фрагменты для проекта помечены отдельно: им нужно указанное окружение.
Код не исполняется на сайте. Скачайте нужный пример и запускайте его в своём локальном окружении.
Материалы сверены 2026-10-12. Примеры и объяснения написаны для этого руководства; источники и обсуждения доступны в каждой главе.


