php中包含文件的上下文

时间:2013-07-23 15:57:21

标签: php function file-inclusion

早上好,

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

同一目录下的文件:

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

的config.php

<?php
$config['json_file'] = 'test.json';

的functions.php

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

model.php

<?php
class Model{

    public function __construct();

    function create()
    {
        writeInFile();
    }
}

form.php的

<?php
include('config.php');
include('functions.php');
include('model.php');

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

当我执行form.php时,我收到此错误:

  

警告:file_put_contents()[function.file-put-contents]:文件名   不能空着   的functions.php

我知道发生这种情况是因为函数.php中的$config['json_file']内的var writeInFile()为空。但是,理论上它应该有效,因为我在form.php的begginig中进行包含。或者我错了吗?

1 个答案:

答案 0 :(得分:1)

从此处[变量范围] [1]

读取变量范围

[1]:http://php.net/manual/en/language.variables.scope.php

刚开始时,来自另一个文件的函数不能使用来自另一个文件的变量,因为它被认为是在本地范围内。这就是你得到错误的原因。阅读有关var范围的更多信息。