Самый простой способ установить PHP CONSTANT в 1 файл и получить к нему доступ везде? - PullRequest
2 голосов
/ 19 января 2010

Я задавал подобные вопросы раньше, но вот полный пример демонстрационного кода. В PHP как я могу получить доступ к значению константы, которое задается в файле конфигурации и затем включается в каждую страницу, Включая КЛАССИЧЕСКИЕ ФАЙЛЫ ?

Я понимаю, что это какая-то проблема области видимости, так как лучше всего получить доступ к этой константе в моем файле класса ниже, не передавая константу в объект при его создании?

Прямо сейчас мой файл класса думает, что переменная CoONSTANT DEBUG установлена ​​в значение true, даже если оно равно false. Правда или ложь, это все еще показывает, и мне нужно, чтобы это работало только когда константа установлена ​​в true, есть идеи?

Пример файла конфигурации, который устанавливает постоянное значение

<?PHP
//config.inc.php  
define('DEBUG', false);

echo 'config file loaded <br /><br />';

// load class file here
include 'some_class.php';
?>

Наш файл класса, который пытается получить доступ к константе, установленной в файле конфигурации выше

<?PHP
//some_class.php

class Test{

    public function __construct()
    {
        echo 'some_class has been ran <br /><br />';

        if ( defined( 'DEBUG' ) )
        {
            echo 'DEBUG Constant is vissible inside our class file now!!!!! <br /><br />';
        }
    }

}
?>

Наша тестовая страница, которая собирает все вместе

<?PHP
//any-file.php

include 'config.inc.php';

if(DEBUG){
    echo 'DEBUG Constant is vissible inside our Regular file, this is normal and always happens without any trouble though <br /><br />';
}

$test = new Test;
?>

Ответы [ 3 ]

1 голос
/ 19 января 2010

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

if ( defined( 'DEBUG' ) )
{
    // debug commands here
}

А чтобы отключить режим отладки, просто раскомментируйте строку define, чтобы константа снова была неопределенной.

0 голосов
/ 19 января 2010

Определить функцию во включаемом файле, которая возвращает значение вашей константы?

0 голосов
/ 19 января 2010

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

Когда вы определяете что-либо с помощью функции define(), оно определяется в глобальном пространстве имен, поэтому любые файлы PHP, включенные с этого момента, будут иметь к нему доступ. Это не самая лучшая ситуация, так как весь код, который зависит от этой константы, включается после включения оператора define().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...