@kolya_krut

Как прочитать файл через `require` более одного раза?

Здравствуйте.

Пример.
Есть файл конфига config.php с return.
<?php

return ['foo'];


Есть скрипт, который получает значение файла в переменную, отдаёт управление другому скрипту (без передачи полученного значения), который правит файл, сохраняет и управление возвращается первому скрипту, который снова получает значение из файла.
<?php

$config = require 'config.php';

// какой-то внешний код (функция, класс, библиотека, фреймворк и т.п.),
// который тоже читает файл, изменяет его и сохраняет также с `return`

$config = require 'config.php'; // как тут получить новое значение с учётом правок внешнего кода?


Как получить обновлённое содержимое файла через require (или include)? Умеет ли PHP читать файлы заново, даже если они уже есть в require/include?
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Умеет. Это не require();, но для простого файла конфигурации - вполне достаточно.
<?php
file_put_contents("x2.php", "\$x=1;");
eval(file_get_contents("x2.php"));
var_dump($x);
file_put_contents("x2.php", "\$x=2;");
eval(file_get_contents("x2.php"));
var_dump($x);
?>

даст:
int(1)
int(2)

Правда на входе eval() код должен быть без тегов <?php и ?> - но это уж сами решите, верно?
Ответ написан
@Mylistryx
Но опять же, все молчат. Ну ненадо так делать!
<?php
$config = require ('config.php');
$config['var'] = 'test';

Или каскадно собирайте конфиг переопределяя. К примеру, посмотрите конфиг Yii2 advanced template.
Не думайте, что вы придумали что-то новое, возможно просто вы реализуете это через...
Ответ написан
Ваш ответ на вопрос

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

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