Контекст включения файла в 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.

В самом начале говорится, что функция из другого включенного файла не может использовать переменную из другого файла, поскольку считается, что она находится в локальной области видимости. Вот почему вы получаете ошибку. Узнайте больше о области видимости.

Другие вопросы по тегам