Есть php-файл примерно с таким содержимым
define('TME_ID', 15);
define('THEME', 'auto');
define('TEMPLATE', 'audi');
В другом скрипте во время работы необходимо прочитать этот файл и изменить значение константы THEME
на home
. Затем перезаписать этот файл (права необходимые имеются).
Вопрос: есть ли универсальное решение этой задачи?
Или придется загружать файл как массив функцией file()
, перебирать его в цикле и выискивать нужную константу регуляркой? Может есть более простое и изящное решение? Версия PHP на сервере 5.6.32
константа
- это переменная, которая не меняет (и не должна) своего значения в процессе выполнения скрипта. При этом каждый, кто работает с данным приложением чётко уверен в неизменности значения константы. Это её суть. И если в процессе обработки возникает необходимость перезаписи её значения, значит вы выбрали неверный алгоритм работы вашего приложения.Для реализации поведения, необходимого вам, используйте базу данных. Сохраняйте значение темы в базе данных и проверяйте/изменяйте сколько угодно раз в течении работы приложения. Если не используете сервер БД, можете оперировать SQLite
Если же вам комфортно работать с файловой системой - переместите константы, которые могут требовать изменений, в массив. Далее создавайте файл, в него записывайте serrialize массив значений; при необходимости unserrialize, обрабатывайте их и снова перезаписывайте .
может стоит рассмотреть другие варианты хранения? например, в виде массива:
ваш файл настроек будет выглядеть, например, так:
<?php
return array (
'TME_ID' => 15,
'THEME' => 'auto',
'TEMPLATE' => 'audi',
);
записывать такой файл можно так:
$config = [
'TME_ID' => 15,
'THEME' => "auto",.
'TEMPLATE' => "audi",
];
$content = "<?php".PHP_EOL."\treturn\t".var_export($config, true);
file_put_contents("./config.php", $content);
а загружать и преобразовывать в константы так
$config = include "./config.php";
foreach($config as $k => $v){
if(!defined($k)){
define($k, $v);
}
}
Потенциально будет у вас один файл конфига, и один файл - его загрзучик, как то так упрощенно
class Settings {
static $cfg = null;
public static function load(){
static::$cfg = include "./config.php";
foreach(static::$cfg as $k => $v){
if(!defined($k)){
define($k, $v);
}
}
}
public static function set($key, $value){
static::$cfg[$key] = $value;
}
public static function save(){
$content = "<?php".PHP_EOL."\treturn\t".var_export(static::$cfg, true);
file_put_contents("./config.php", $content);
}
} Settings::load();
подключите его и будете использовать, примерно так
require_once "settings.class.php"
Settings::set('THEME', 'home');
Settings::save();
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день! Подскажите пожалуйста, поставил плагин проверки "битых ссылок", но необходимо его расширить, добавить пару url-адресов для проверки...
WP Данные из текстового поля попадают в переменную the_contentНужна функция, которая будет пробегаться по тексту, выискивать таблицы, не заключенные...
Есть АПИ на Laravel, я использую библиотеку Laravel-Excel что бы сгенерировать xls файл, как его правильно отдать клиенту и как сделать на реакте скачивание...
Мне нужен скрипт на PHP или JavaScript, который будет на стороннем сайте вводить в текстовое поле текст, а потом нажимать несколько кнопокID кнопок...