Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.231.55.243] |
|
Сообщ.
#1
,
|
|
|
Добрый день.
Подскажите как сделать. Есть PHP-файл к кодом. В этом файле есть переменная $total_items = '30', хотелось бы её изменять время от времени. Логика такая: читаем этот файл, с помощью preg_replace заменяем в нём переменную (например будет $total_items = '100'), записываем файл. Вот с регуляркой в preg_replace и возникла проблема. Нашел вот здесь пример https://toster.ru/q/59320, но что-то он не работает правильно. Может кто-то подскажет с рег. выражением как это правильно делается? Спасибо. $string = "$a = '1'; $b = '2'; $c = '3';"; $var_name = 'a'; $new_value = '4'; echo preg_replace("@$($var_name)\s*=\s*'.*?'@", "$$1='$new_value'", $string); // Результат, = '1'; = '2'; = '3'; |
Сообщ.
#2
,
|
|
|
имхо это изврат.
Чем не подходит $_GLOBALS, $_SESSION или БД? по крайней мере, можно писать в конфигурационный файл. А так можно легко попортить код. |
Сообщ.
#3
,
|
|
|
str_replace( )
|
Сообщ.
#4
,
|
|
|
В БД, хранить можно. Но дело в том, что файл будет перезаписывать очень редко, а если хранить это значение в БД, то SQL-запросы, чтобы его получить, будут идти при каждой загрузке страницы. Поэтому и хочу избежать этого этого лишнего запроса.
|
Сообщ.
#5
,
|
|
|
some.json
{"value": 30} any.php $data = json_decode(file_get_contents(__DIR__ . '/some.json')); Magic Добавлено Цитата DIS @ $_GLOBALS В нормальном мире за использование $_GLOBALS сажают на кол. В принципе, как и за подобные предложения, озвученные автором |
Сообщ.
#6
,
|
|
|
Если файлом, то я бы сделал как-то так:
config.php $config = [ 'total_items' => 100, ]; изменение параметра include 'config.php'; $config['total_items'] = 50; file_put_contents('config.php', '$config = ' . var_export($config) . ';'); Добавлено Serafim, а где это - нормальный мир? |
Сообщ.
#7
,
|
|
|
Цитата DIS @ Если файлом, то я бы сделал как-то так: тогда уж лучше return [ 'total_iterms' => 30 ]; $config = require __DIR__ . '/config.php'; $totalItems = $config['total_items'] ?? 50; // ... Добавлено Цитата DIS @ Serafim, а где это - нормальный мир? Там, где год на дворе стоит 2017ый, а не начала 2000ых |
Сообщ.
#8
,
|
|
|
Век живи, век учись. Про возврат с require не знал.
|
Сообщ.
#9
,
|
|
|
Цитата Serafim @ тогда уж лучше Но в этом случае нельзя данные автоматизировать нормально, чтобы кем-то перезаписывать (var_export не предлагать). Так что я за переносимый формат, вроде json |
Сообщ.
#10
,
|
|
|
А json зато любой может легко прочитать обычным запросом с веб-сервера (если специально не настраивать доступ). Да и во фреймворках, например в yii, конфиг хранится в php файле, а не в json.
|
Сообщ.
#11
,
|
|
|
Цитата DIS @ А json зато любой может легко прочитать обычным запросом с веб-сервера нет, не может, потому что в public директории (для веба) лежат только то, что под паблик идёт, а все системные файлы всегда располагаются вне "web root" директории. И к серверу это не привязано. Добавлено Цитата DIS @ Да и во фреймворках, например в yii, конфиг хранится в php файле, а не в json. Приводить Yii в качестве качественного решения - довольно самонадеянно. Ты бы ещё битрикс привёл в пример |
Сообщ.
#12
,
|
|
|
Цитата Serafim @ нет, не может, потому что в public директории (для веба) лежат только то, что под паблик идёт, а все системные файлы всегда располагаются вне "web root" директории Так должно быть в нормальном приложении, но не факт, что у всех так. И дополнительная мера безопасности - это всегда хорошо. Согласен, что это не главный аргумент для выбора формата, но все же. Цитата Serafim @ Приводить Yii в качестве качественного решения - довольно самонадеянно А чем Yii плох? И что лучше? |
Сообщ.
#13
,
|
|
|
Цитата DIS @ А чем Yii плох? Говнокод в ядре и невероятно высокая связанность компонентов. Для бложиков и типовых сайтиков - божественная штука, но если проект чуть круче - начинаются пляски. Лучше: Symfony или Laravel брать сразу. Добавлено Цитата DIS @ Так должно быть в нормальном приложении, но не факт, что у всех так. Тогда это их проблемы, ты так не считаешь? =) На дворе 2017ый год всё же и подобные штуки должны уже по привычке делаться. |