0

早上好,

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

同一目录下的文件:

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

配置文件

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

函数.php

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

模型.php

<?php
class Model{

    public function __construct();

    function create()
    {
        writeInFile();
    }
}

表单.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 中的文件名不能为空

我知道发生这种情况是因为在functions.php中var$config['json_file']为null 。writeInFile()但是,理论上它应该有效,因为我是在 form.php 的开始时进行包含的。还是我错了?

4

1 回答 1

1

从这里读取变量范围 [变量范围][1]

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

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

于 2013-07-23T16:34:04.713 回答