Php вывести все константы

list all defined constants from a file in php

now I need to read each file and list all constants and their values and to return an output like this : constant name : value is : so I think there should be function to list all defined constants of a given php file. I’m aware of functions like token_get_all or get_defined_constants but i wasn’t able to do it.

i did noted that I have read those manuals , i’m concerning here on getting all defined constants of a ( specific PHP file ) not all defined constants of a system

While I am sympathetic to this question, I wonder what the practical necessity is for figuring out constants defined in a specific file. As your project grows, you may want to put certain constant definitions into external files which are include d in another file, simply for readability without any change in functionality.

5 Answers 5

If the files do contain nothing but define statements, you can use get_defined_constants :

function getUserDefinedConstants() < $constants = get_defined_constants(true); return (isset($constants['user']) ? $constants['user'] : array()); >$constantsBeforeInclude = getUserDefinedConstants(); include('file.php'); $constantsAfterInclude = getUserDefinedConstants(); $newConstants = array_diff_assoc($constantsAfterInclude, $constantsBeforeInclude); 

What it does is basically: get_defined_constants(true) gives us an array of arrays with all available constants, sorted by sections (core, user, ..) — the array under the key ‘user’ gives us all user-defined constants that we defined in our php code using define , up to that point. array_diff_assoc gives us the difference between this array before and after the file got included.. and that is exactly a list of all constants that got defined in that specific file (as long as there is none of the declarations a duplicate, meaning a constant with that exact name has been defined before — but this would cause an error anyway).

Читайте также:  Css примеры готовых стилей

Источник

get_defined_constants

Возвращает ассоциативный массив с именами и значениями всех предопределенных констант. Массив также будет включать в себя константы, определенные расширениями, а также созданные функцией define() .

Список параметров

Использование этого аргумента дает возможность получить многомерный массив, в котором в первом измерении будут содержаться категории констант, а во втором соответствующие имена и значения.

Результатом выполнения данного примера будет что-то подобное:

Array ( [Core] => Array ( [E_ERROR] => 1 [E_WARNING] => 2 [E_PARSE] => 4 [E_NOTICE] => 8 [E_CORE_ERROR] => 16 [E_CORE_WARNING] => 32 [E_COMPILE_ERROR] => 64 [E_COMPILE_WARNING] => 128 [E_USER_ERROR] => 256 [E_USER_WARNING] => 512 [E_USER_NOTICE] => 1024 [E_ALL] => 2047 [TRUE] => 1 ) [pcre] => Array ( [PREG_PATTERN_ORDER] => 1 [PREG_SET_ORDER] => 2 [PREG_OFFSET_CAPTURE] => 256 [PREG_SPLIT_NO_EMPTY] => 1 [PREG_SPLIT_DELIM_CAPTURE] => 2 [PREG_SPLIT_OFFSET_CAPTURE] => 4 [PREG_GREP_INVERT] => 1 ) [user] => Array ( [MY_CONSTANT] => 1 ) )

Возвращаемые значения

Возвращает массив вида «имя константы» => «значение константы», с возможностью сгруппировать его по имени расширения, зарегистрировавшей константу.

Список изменений

Версия Описание
5.3.1 Только для Windows: Константы ядра входят в категорию Core. Раньше категория называлась mhash.
5.3.0 Константы ядра входят в категорию Core. Раньше категория называлась internal,а в Windows системах — mhash.
5.2.11 Значение аргумента categorize стало обрабатываться подобающим образом. Раньше аргумент categorize воспринимался, как выражение !is_null($categorize), то есть любое значение отличное от NULL предписывало разделять константы на категории.

Примеры

Пример #1 Пример использования get_defined_constants()

Результатом выполнения данного примера будет что-то подобное:

Array ( [E_ERROR] => 1 [E_WARNING] => 2 [E_PARSE] => 4 [E_NOTICE] => 8 [E_CORE_ERROR] => 16 [E_CORE_WARNING] => 32 [E_COMPILE_ERROR] => 64 [E_COMPILE_WARNING] => 128 [E_USER_ERROR] => 256 [E_USER_WARNING] => 512 [E_USER_NOTICE] => 1024 [E_ALL] => 2047 [TRUE] => 1 )

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

  • defined() — Проверяет существование указанной именованной константы
  • get_loaded_extensions() — Возвращает массив имен всех скомпилированных и загруженных модулей
  • get_defined_functions() — Возвращает массив всех определённых функций
  • get_defined_vars() — Возвращает массив всех определенных переменных

Источник

PHP
Константы

Константы используются для хранения значений, которые не должны быть изменены позже. Они также часто используются для хранения параметров конфигурации, особенно тех, которые определяют среду (dev / production).

Константы имеют такие типы, как переменные, но не все типы могут использоваться для инициализации константы. Объекты и ресурсы не могут использоваться как значения для констант вообще. Массивы могут использоваться как константы, начиная с PHP 5.6

Некоторые постоянные имена зарезервированы PHP. К ним относятся true , false , null а также многие константы, специфичные для модуля.

Константы обычно называются с использованием прописных букв.

Проверка константы

Простая проверка

Чтобы проверить, определена ли константа, используйте defined функцию. Обратите внимание, что эта функция не заботится о значении константы, она заботится только о том, существует ли константа или нет. Даже если значение константы равно null или false функция все равно вернет true .

Обратите внимание, что константа становится «видимой» в вашем коде только после строки, в которой вы ее определили:

 define("GOOD", false); if (defined("GOOD")) < print "GOOD is defined"; // prints "GOOD is defined" >

Получение всех определенных констант

Чтобы получить все определенные константы, в том числе созданные PHP, используйте функцию get_defined_constants :

Чтобы получить только те константы, которые были определены вашим приложением, вызовите функцию в начале и в конце вашего скрипта (обычно после процесса начальной загрузки):

Иногда это полезно для отладки

Определение констант

Константы создаются с помощью инструкции const или функции define . Соглашением является использование букв UPPERCASE для постоянных имен.

Определить константу с использованием явных значений

const PI = 3.14; // float define("EARTH_IS_FLAT", false); // boolean const "UNKNOWN" = null; // null define("APP_ENV", "dev"); // string const MAX_SESSION_TIME = 60 * 60; // integer, using (scalar) expressions is ok const APP_LANGUAGES = ["de", "en"]; // arrays define("BETTER_APP_LANGUAGES", ["lu", "de"]); // arrays 

Определить константу с использованием другой константы

если у вас есть одна константа, вы можете определить другую на основе этого:

const TAU = PI * 2; define("EARTH_IS_ROUND", !EARTH_IS_FLAT); define("MORE_UNKNOWN", UNKNOWN); define("APP_ENV_UPPERCASE", strtoupper(APP_ENV)); // string manipulation is ok too // the above example (a function call) does not work with const: // const TIME = time(); # fails with a fatal error! Not a constant scalar expression define("MAX_SESSION_TIME_IN_MINUTES", MAX_SESSION_TIME / 60); const APP_FUTURE_LANGUAGES = [-1 => "es"] + APP_LANGUAGES; // array manipulations define("APP_BETTER_FUTURE_LANGUAGES", array_merge(["fr"], APP_BETTER_LANGUAGES)); 

Зарезервированные константы

Некоторые константные имена зарезервированы PHP и не могут быть переопределены. Все эти примеры потерпят неудачу:

define("true", false); // internal constant define("false", true); // internal constant define("CURLOPT_AUTOREFERER", "something"); // will fail if curl extension is loaded 
Constant . already defined in . 

Условные определения

Если у вас есть несколько файлов, где вы можете определить одну и ту же переменную (например, вашу основную конфигурацию, а затем локальную конфигурацию), следующий синтаксис может помочь избежать конфликтов:

defined("PI") || define("PI", 3.1415); // "define PI if it's not yet defined" 

const vs define

define — это выражение времени выполнения, а const — время компиляции.

Таким образом, define позволяет использовать динамические значения (т. Е. Вызовы функций, переменные и т. Д.) И даже динамические имена и условное определение. Тем не менее он всегда определяет относительно корневого пространства имен.

const является статичным (как в случае допускаются только операции с другими константами, скалярами или массивами и только ограниченный набор из них, так называемые константные скалярные выражения , то есть арифметические, логические и операторы сравнения, а также разыменование массива), но они автоматически являются пространством имен с префиксом текущего активного пространства имен.

const поддерживает только другие константы и скаляры как значения, а не операции.

Константы классов

Константы могут быть определены внутри классов с использованием ключевого слова const .

class Foo < const BAR_TYPE = "bar"; // reference from inside the class using self:: public function myMethod() < return self::BAR_TYPE; >> // reference from outside the class using :: echo Foo::BAR_TYPE; 

Это полезно для хранения типов предметов.

 > $logger = new Logger(); $logger->log("Info"); // Using default value $logger->log("Warning", $logger::LEVEL_WARNING); // Using var $logger->log("Error", Logger::LEVEL_ERROR); // using class 

Постоянные массивы

Массивы могут использоваться как простые константы и константы класса из версии PHP 5.6 и далее:

Пример константы класса

class Answer < const C = [2,4]; >print Answer::C[1] . Answer::C[0]; // 42 

Пример простой константы

const ANSWER = [2,4]; print ANSWER[1] . ANSWER[0]; // 42 

Также из версии PHP 7.0 эта функция была перенесена на функцию define для простых констант.

define('VALUES', [2, 3]); define('MY_ARRAY', [ 1, VALUES, ]); print MY_ARRAY[1][1]; // 3 

Использование констант

Чтобы использовать константу, просто используйте ее имя:

if (EARTH_IS_FLAT) < print "Earth is flat"; >print APP_ENV_UPPERCASE; 

или если вы заранее не знаете имя константы, используйте constant функцию:

// this code is equivalent to the above code $const1 = "EARTH_IS_FLAT"; $const2 = "APP_ENV_UPPERCASE"; if (constant($const1)) < print "Earth is flat"; >print constant($const2); 
  • Начало работы с PHP
  • APCu
  • BC Math (бинарный калькулятор)
  • Imagick
  • IMAP
  • JSON
  • Loops
  • PDO
  • PHP MySQLi
  • php mysqli affected rows возвращает 0, когда он должен возвращать положительное целое число
  • PHP Встроенный сервер
  • PHPDoc
  • PSR
  • SimpleXML
  • SQLite3
  • Streams
  • URL-адрес
  • UTF-8,
  • WebSockets
  • XML
  • YAML в PHP
  • Автозагрузка грунтовки
  • Альтернативный синтаксис для структур управления
  • Анализ HTML
  • Асинхронное программирование
  • Аутентификация HTTP
  • Безопасность
  • Буферизация вывода
  • Вклад в PHP Core
  • Внедрение зависимости
  • Внесение изменений в Руководство по PHP
  • Волшебные константы
  • Волшебные методы
  • Вывод значения переменной
  • Выполнение по массиву
  • Генераторы
  • закрытие
  • Защитите Remeber Me
  • Интерфейс командной строки (CLI)
  • Использование cURL в PHP
  • Использование MongoDB
  • Использование Redis с PHP
  • Использование SQLSRV
  • Итерация массива
  • Как определить IP-адрес клиента
  • Как разбить URL-адрес
  • Класс Datetime
  • Классы и объекты
  • Клиент SOAP
  • Комментарии
  • Компилировать расширения PHP
  • Компиляция ошибок и предупреждений
  • Константы
  • Контрольные структуры
  • криптография
  • кэш
  • локализация
  • Манипулирование массивом
  • Манипуляции заголовков
  • Массивы
  • Машинное обучение
  • Менеджер зависимостей композитора
  • Многопоточное расширение
  • многопроцессорная обработка
  • Монго-PHP
  • Область переменных
  • Обработка изображений с помощью GD
  • Обработка исключений и отчетов об ошибках
  • Обработка нескольких массивов вместе
  • Обработка файлов
  • Общие ошибки
  • операторы
  • отладка
  • Отправка электронной почты
  • отражение
  • переменные
  • Переменные Superglobal PHP
  • Печенье
  • Поддержка Unicode в PHP
  • Пространства имен
  • Работа с датами и временем
  • Развертывание докеров
  • Регулярные выражения (regexp / PCRE)
  • Рекомендации
  • Рецепты
  • Розетки
  • Сервер SOAP
  • Сериализация
  • Сериализация объектов
  • сессии
  • Соглашения о кодировании
  • Создание PDF-файлов в PHP
  • Спектакль
  • Строковый анализ
  • Структуры данных SPL
  • Тестирование устройства
  • Тип жонглирования и нерегулярные проблемы сравнения
  • Тип подсказки
  • Типы
  • Установка в средах Linux / Unix
  • Установка среды PHP в Windows
  • Фильтры и функции фильтра
  • Форматирование строк
  • функции
  • Функции хеширования пароля
  • Функциональное программирование
  • Черты
  • Чтение данных запроса
  • Шаблоны проектирования

Источник

Оцените статью