PHP                
            Константы
        
        
            
    Поиск…
Синтаксис
- define (string $ name, mixed $ value [, bool $ case_insensitive = false])
 - const CONSTANT_NAME = VALUE;
 
замечания
Константы используются для хранения значений, которые не должны быть изменены позже. Они также часто используются для хранения параметров конфигурации, особенно тех, которые определяют среду (dev / production).
Константы имеют такие типы, как переменные, но не все типы могут использоваться для инициализации константы. Объекты и ресурсы не могут использоваться как значения для констант вообще. Массивы могут использоваться как константы, начиная с PHP 5.6
 Некоторые постоянные имена зарезервированы PHP. К ним относятся true , false , null а также многие константы, специфичные для модуля. 
Константы обычно называются с использованием прописных букв.
Проверка константы
Простая проверка
 Чтобы проверить, определена ли константа, используйте defined функцию. Обратите внимание, что эта функция не заботится о значении константы, она заботится только о том, существует ли константа или нет. Даже если значение константы равно null или false функция все равно вернет true . 
<?php
define("GOOD", false);
if (defined("GOOD")) {
    print "GOOD is defined" ; // prints "GOOD is defined"
    if (GOOD) {
        print "GOOD is true" ; // does not print anything, since GOOD is false
    }
}
if (!defined("AWESOME")) {
   define("AWESOME", true); // awesome was not defined. Now we have defined it 
}
 Обратите внимание, что константа становится «видимой» в вашем коде только после строки, в которой вы ее определили:
<?php
if (defined("GOOD")) {
   print "GOOD is defined"; // doesn't print anyhting, GOOD is not defined yet.
}
define("GOOD", false);
if (defined("GOOD")) {
   print "GOOD is defined"; // prints "GOOD is defined"
}
 Получение всех определенных констант
 Чтобы получить все определенные константы, в том числе созданные PHP, используйте функцию get_defined_constants : 
<?php
$constants = get_defined_constants();
var_dump($constants); // pretty large list
 Чтобы получить только те константы, которые были определены вашим приложением, вызовите функцию в начале и в конце вашего скрипта (обычно после процесса начальной загрузки):
<?php
$constants = get_defined_constants();
define("HELLO", "hello"); 
define("WORLD", "world"); 
$new_constants = get_defined_constants();
$myconstants = array_diff_assoc($new_constants, $constants);
var_export($myconstants); 
   
/* 
Output:
array (
  'HELLO' => 'hello',
  'WORLD' => 'world',
) 
*/
 Иногда это полезно для отладки
Определение констант
 Константы создаются с помощью инструкции 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 <ClassName>::
echo Foo::BAR_TYPE;
 Это полезно для хранения типов предметов.
<?php
class Logger {
    const LEVEL_INFO = 1;
    const LEVEL_WARNING = 2;
    const LEVEL_ERROR = 3;
    // we can even assign the constant as a default value
    public function log($message, $level = self::LEVEL_INFO) {
        echo "Message level " . $level . ": " . $message;
    }
}
$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);