当包含变量时,为什么全局变量在类中是空的?

时间:2009-08-12 15:22:35

标签: php class global

我要做的是拥有一个单独的PHP文件,其中包含网站的设置,然后让其他页面包含此文件并根据设置执行代码。但是,每当我使用global在类中引用这些变量时,变量都是空的。例如:

的settings.php:

<?php
$setting1 = 'on';
$setting2 = 'off';
?>

class.php:

<?php
require_once('./settings.php');

class myclass {
  public function __construct {
    global $setting1;
    echo $setting1;
  }
}

$object = new myclass;
?>

这不会打印任何内容。但是,如果我在课外进行“echo $ setting1”,它会打印'on'。当我尝试在文件本身内部设置变量而不是包含它时,在为myclass创建新对象时打印'on'。我是否需要做一些特别的事情来使包含的变量在类的全局范围内可用?

2 个答案:

答案 0 :(得分:8)

您的构造函数在其名称后需要括号,例如

public function __construct() {

}

我怀疑这会给您一个致命的错误,而且由于您的display_errors / error_reporting设置而未显示。

答案 1 :(得分:1)

你错过了括号:

public function __construct {

应该是

public function __construct( ) {

结果:

$ php -v
PHP 5.2.5 (cli) (built: Nov 29 2007 09:31:38) 
2007-Macbook:Desktop mark$ php class.php
on