早上好,
我试图了解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中进行包含。或者我错了吗?
答案 0 :(得分:1)
从此处[变量范围] [1]
读取变量范围[1]:http://php.net/manual/en/language.variables.scope.php。
刚开始时,来自另一个文件的函数不能使用来自另一个文件的变量,因为它被认为是在本地范围内。这就是你得到错误的原因。阅读有关var范围的更多信息。