0
$test = test;

class getFile{
    public function __construct($fileName){
    require $fileName;
  } 
}

$get = new getFile('file.php');

所以 file.php 包含, echo $test;

如果我要在课外打电话,例如

需要'test.php';它会得到 $test 罚款但是在类内部调用有明显的范围问题。如何让函数中所需的文件访问变量?

编辑: - - - - - - - - - - - -

我有多个变量我希望这个文件可以访问(它们都是基于页面动态的,所以添加 x 和 y 变量是不可能的,因为它们不会总是被设置)而不是将每个变量声明为全局可访问的,有没有办法要允许类中的所需文件,访问这些变量,就好像它不是一样?

谢谢你们的反馈。不幸的是,我想要的似乎不可能,但是您启发了我创建一个解决方法,该解决方法将我需要我的文件访问的最重要的变量注册为全局变量。

4

4 回答 4

1
public function __construct($fileName) {
    global $test;
    require $fileName;
} 

将工作

于 2011-10-19T19:56:53.560 回答
0

也许您可以在类中声明一个全局变量,如下所示:

$text = 'test';

class getFile {
   public function __construct($fileName) {
      global $test;
      require $fileName;
   }
}

$get = new getFile('file.php');
于 2011-10-19T19:58:22.113 回答
0

在全局范围内声明的 PHP 变量不会自动在函数或方法中可用。您必须明确声明它们是全局变量:

file.php:

    <?php
    global $test
    echo $test

或者

public function __construct($filename) {
    global $test;
    require $filename;
}

都可以解决问题。即使file.php脚本看起来是全局的,因为其中没有函数定义,它仍然绑定到__construct()对象中方法的范围,它不会有 $test 全局。

于 2011-10-19T19:58:45.550 回答
0

回复您的评论,我有您可能喜欢的解决方法

class getFile{
    public $files = Array();
    public function __construct($fileName){
        $this->files[] = $fileName;
    } 
}

$get = new getFile('file.php');

foreach($get->files as $file) require($file);

或者你可以创建静态方法?

class getFile{
    public static $files = Array();
    public static function get($fileName){
        self::$files[] = $fileName;
    } 
}

getFile::get('file1.php');
getFile::get('file2.php');
getFile::get('file3.php');

foreach(getFile::$files as $file) require($file);
于 2011-10-19T20:07:42.730 回答