之前我曾问过类似的问题,但这里是一个完整的演示示例代码。在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;
?>
答案 0 :(得分:1)
使用defined检查是否定义了常量,而不是访问其值:
if ( defined( 'DEBUG' ) )
{
// debug commands here
}
要禁用调试模式,只需取消注释define
行,以便再次定义常量。
答案 1 :(得分:0)
大多数框架通过成为整个网站的中心控制点来实现这一目标。如果您的Web应用程序不是集中式的,那么您将没有集中的配置文件,也无法集中访问配置。
使用define()
函数定义某些内容时,它在全局命名空间中定义,因此从该点开始包含的任何PHP文件都可以访问它。这不是最好的情况,因为在运行define()
语句之后谓词依赖于该常量的所有代码。
答案 2 :(得分:0)
在包含文件中定义一个函数,该函数返回常量的值?