@Lanserot
как еж в тумане

Как открыть файл передав в него массив?

Есть файл, который я хочу открыть
test.php - например и передать в него $arr

можно сделать так
$arr = ['test' => 'test'];
require $filePath;


И если я в файле сделаю
echo $arr['test'];
Тогда мне выведет 'test'

Но я подозреваю, что это не очень правильно.
Нашел readfile() метод, там передаётся контекст ресурса и тут я вообще ничего не понимаю.

Прошу помочь открыть файл через readfile() передав в него массив данных, который я смогу использовать в файле.
readfile($filePath, false, $arr);
Подозреваю должно быть так, что бы в файле я мог использовать $arr, но его как-то надо обработать
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
public function renderPhpFile($_file_, $_params_ = [])
    {
        $_obInitialLevel_ = ob_get_level();
        ob_start();
        ob_implicit_flush(false);
        extract($_params_, EXTR_OVERWRITE);
        try {
            require $_file_;
            return ob_get_clean();
        } catch (\Exception $e) {
            while (ob_get_level() > $_obInitialLevel_) {
                if (!@ob_end_clean()) {
                    ob_clean();
                }
            }
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $_obInitialLevel_) {
                if (!@ob_end_clean()) {
                    ob_clean();
                }
            }
            throw $e;
        }
    }


Вот так в Yii2 происходит рендер файла, ключевые пункты тут :
extract($_params_, EXTR_OVERWRITE);
require $_file_;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы