Подтвердить что ты не робот

Каков наилучший способ определить глобальную константу в PHP, которая доступна во всех файлах?

Каков наилучший способ определения глобальной константы, т.е. Доступной во всех файлах PHP?

ОБНОВЛЕНИЕ: Каковы различия между константами и константами класса? Могут ли они быть взаимозаменяемыми?

4b9b3361

Ответ 1

Определите вашу константу в вашем верхнем .php файле, который будет включен во все остальные скрипты. Это может быть ваш фронт-контроллер, ваш конфигурационный файл или файл, созданный для этой единственной цели.

!defined('MY_CONST') && define('MY_CONST', 'hello');

Ответ 2

выполните следующие действия:

define("CONSTANT_NAME","value");

если вы хотите получить доступ к этой константе из других php файлов, вы должны включить ее:

include_once("thefilewiththeconstant.php");

Ответ 3

проверьте это

<?php
//Global scope variables
$a = 1;
$b = 2;

 function Sum()
 {
global $a, $b;

$b = $a + $b;
 } 

Sum();
echo $b;
?>

Ответ 4

Если вы хотите использовать глобальные константы в файлах PHP, я считаю, что хорошей практикой является использование объектно-ориентированных принципов и их определение в соответствующих классах. Используя функцию spl_autoload_register(), встроенную в PHP, вы можете определить все ваши более поздние классы, чтобы расширить связанный "класс глобалов", не беспокоясь о том, чтобы включать файлы вручную повсюду. Все последующие дочерние классы этого класса globals всегда будут иметь доступ к связанным глобальным переменным. (Я говорю, потому что это хороший дизайн, чтобы иметь глобальные константы в классе, в некотором роде, чем все, сгруппированные вместе без рифмы или разума)

Ответ 5

Какой бы файл ни создавал ваши постоянные элементы, вам придется потребовать/включить его в файлы, которые вы будете использовать.

В противном случае вы можете использовать глобальный $_SESSION, но для начала инициализации сеанса требуется session_start() в начале вашего кода в каждом из этих файлов.

Ответ 6

Лучше всего проверить, назначена ли константа чему-либо и если она не назначена никому, а затем назначить ее, иначе назначьте ее NULL, а затем назначьте ее константе

defined("FOO") ? null : define("FOO", "BAR");

Ответ 7

Это зависит. В вашей ситуации я бы пошел на define(), потому что он имеет более компактный синтаксис в использовании. Но define() может удерживать только скалярные значения в PHP < 7.0. Если вам нужен i.e ассоциативный массив, у вас нет другого выбора, то пойти на $GLOBALS или использовать PHP >= 7.0.

// Storing a single value works fine with define
define( 'ROOT_DIR', dirname(dirname(__FILE__)) . '/' );

// But not for complex data types like this array
$USERPIC_PARAMS = array(
            "user_root"       => "images/users",
            "padding_length"    => 8,
            "split_length"      => 4,
            "hash_length"         => 12,
            "hide_leftover"     => false
    );

// Then you need $GLOBALS
$GLOBALS['USERPIC_PARAMS']  = $USERPIC_PARAMS;
// Or in PHP >=7.0
define( 'USERPIC_PARAMS', $USERPIC_PARAMS );

// output your define
echo ROOT_DIR;
// output your $GLOBALS var
echo $GLOBALS['USERPIC_PARAMS'];
// output in PHP >=7.0 your constant
echo USERPIC_PARAMS;