Контекст включения файла в php
Доброе утро,
Я пытаюсь узнать, как работает включение файла в 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
Я знаю, что это происходит потому, что вар $config['json_file']
является нулевым внутри writeInFile()
в functions.php. Но теоретически это должно работать, потому что я делаю включение в начале form.php. Или я не прав?
1 ответ
Читайте переменную область отсюда [переменная область] [1]
[1]: http://php.net/manual/en/language.variables.scope.php.
В самом начале говорится, что функция из другого включенного файла не может использовать переменную из другого файла, поскольку считается, что она находится в локальной области видимости. Вот почему вы получаете ошибку. Узнайте больше о области видимости.