php中文件包含的上下文

php中文件包含的上下文,php,function,file-inclusion,Php,Function,File Inclusion,早上好 我试图学习php中的文件包含是如何工作的。今天,我遇到了一个我无法解决的问题。这是我的设想: 同一目录下的文件: - config.php - db.php - functions.php - form.php config.php <?php $config['json_file'] = 'test.json'; <?php function writeInFile() { echo $config['json_file']; // just for debug

早上好

我试图学习php中的文件包含是如何工作的。今天,我遇到了一个我无法解决的问题。这是我的设想:

同一目录下的文件:

- config.php
- db.php
- functions.php
- form.php
config.php

<?php
$config['json_file'] = 'test.json';
<?php
function writeInFile()
{
    echo $config['json_file']; // just for debugging porpuses
    file_put_contents($config['json_file'], json_encode(time()));
}
<?php
class Model{

    public function __construct();

    function create()
    {
        writeInFile();
    }
}
<?php
include('config.php');
include('functions.php');
include('model.php');

$model = new \Model();
$m->create();

从此处读取变量范围[variable scope][1]

[1] :


一开始,它说,包含的另一个文件中的函数不能使用另一个文件中的变量,因为它被认为是在局部范围内。这就是为什么你会犯错误。阅读有关var范围的更多信息。

我认为您需要将参数传递给
writeInFile()
我不这么认为。这是因为file\u put\u内容需要一个文件名来写入,这是因为配置变量在此时以null的形式到达function@manix-您可以将
$config
作为参数传递到函数中;也可以将其声明为全局变量。否则,它就超出了范围。这就是为什么您看到空值-
$config
超出范围。在本例中,config.php的范围是什么?@manix-当您包含一个文件时,它实际上与剪切和粘贴包含文件的内容相同。因此,您在config.php中定义的任何变量都将与
$model
具有相同的作用域。