settings — заменить строковое значение в config.Stack Overflow

Я не так много знаю о php. У меня есть 3 файла в моем проекте.

Первый — это system.php, который содержит логику приложения дыры.
вот его код:

<?php
require "config/config_system.php";

$config = new Config;
$config-> load('config.php');
// this is way i want to change setting.
echo $config-> replace("db.host" , "replace value");
?>

Второй — config_system.php, который содержит логику конфигурации. Здесь ее код:

<?php

class Config {

protected $data;
protected $informaton;

protected $default;

public function load($file) {

$this->data = require $file;
$this->informaton = require $file;

}

public function find($key, $default = null) {

$this->default = $default;

$segments = explode(".", $key);

$data = $this->data;

foreach ($segments as $segment) {
if (isset($data[$segment])) {
$data = $data[$segment];
} else {
$data = $this->default;
break;
}
}

return $data;

}

public function exists($key) {

return $this->find($key) !== $this->default;

}

// this is the function i am trying to make valide
public function replace($value) {

$arrayvalues = explode(".", $value);

$informaton = $this->informaton;

foreach ($arrayvalues as $arrayvalue) {
if (isset($informaton[$arrayvalue])) {
$informaton = $informaton[$arrayvalue];
}
}

return $arrayvalues;

}
}
?>

и третий — config.php, который содержит конфигурации.

<?php

return [
"installation"      => [
// this is the value I want to change via a function to true.
"create_db"         => "false",
"create_table"      => "false"
],
"db"                => [
"host"              => "localhost",
"user_name"         => "root",
"password"          => ""]
];

?>

Теперь я хочу изменить некоторые настройки с помощью функции. Как мне это сделать?

0

Решение

public function replace ($keyset, $value){
$key_parse = explode(".",keyset);
$this->data[$key_parse[0]][$key_parse[1]] = $value;
return $this->data;
}

Используйте эту функцию в вашем config_system.php

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]