在1个文件中设置PHP CONSTANT并在任何地方访问它的最简单方法?

时间:2010-01-19 18:00:42

标签: php class scope

之前我曾问过类似的问题,但这里是一个完整的演示示例代码。在PHP中,如何访问在配置文件中设置的Constant值,然后将其包含在每个页面中,包括CLASS FILES

我意识到这是某种范围问题,所以在我的类文件中访问此常量的最佳方法是什么,而不是在创建ius时将常量传递给对象?

现在,我的类文件认为CoONSTANT DEBUG var即使为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 个答案:

答案 0 :(得分:1)

使用defined检查是否定义了常量,而不是访问其值:

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

要禁用调试模式,只需取消注释define行,以便再次定义常量。

答案 1 :(得分:0)

大多数框架通过成为整个网站的中心控制点来实现这一目标。如果您的Web应用程序不是集中式的,那么您将没有集中的配置文件,也无法集中访问配置。

使用define()函数定义某些内容时,它在全局命名空间中定义,因此从该点开始包含的任何PHP文件都可以访问它。这不是最好的情况,因为在运行define()语句之后谓词依赖于该常量的所有代码。

答案 2 :(得分:0)

在包含文件中定义一个函数,该函数返回常量的值?