在方法PHP中包含外部变量

时间:2014-08-23 10:22:35

标签: php global-variables require-once

我有这段代码:

//config.php
$EXAMPLE['try1'] = "...." ;
$EXAMPLE['try2'] = "...." ;

所以,我有另一个带有php类的文件:

class try {
   public function __construct() {
       if($this->try1() && $this->try2()){
            return true;
       }
   }
   public function try1(){
   require_once 'config.php' ;
   echo $EXAMPLE['try1'];
   return true;
   }
   public function try2(){
   require_once 'config.php' ;
   echo $EXAMPLE['try2'];
   return true;
   }
}

但就我而言,$EXAMPLE['try1']是.....,但$EXAMPLE['try2']为空......为什么?我尝试在首页添加require_once 'config.php' ;,在global $EXAMPLE;后添加,但$EXAMPLE为空,为什么?

2 个答案:

答案 0 :(得分:1)

使用require,而不是require_once。否则,如果在一个函数中加载文件,它将不会加载到另一个函数中,因此它不会获取变量。

最好完全要求函数外部的函数。然后将$EXAMPLE声明为全局变量。

require_once 'config.php';

class try {
    public function __construct() {
        if($this->try1() && $this->try2()){
            return true;
        }
    }
    public function try1(){
        global $EXAMPLE
        echo $EXAMPLE['try1'];
        return true;
    }
    public function try2(){
        global $EXAMPLE
        echo $EXAMPLE['try2'];
        return true;
    }
}

答案 1 :(得分:1)

__construct方法中要求您的文件。因此,在try1方法中需要一次需要文件。

class try {

    private $_example = array();

    public function __construct() {

        require_once 'config.php';

        $this->_example = $EXAMPLE;

        return $this->try1() && $this->try2();
    }

     public function try1(){
        echo $this->_example['try1'];
        return true;
     }

     public function try2(){
        echo $this->_example['try2'];
        return true;
     }
}