2016-12-25 3 views
0

Je ne sais pas beaucoup de choses sur php. J'ai 3 fichiers dans mon projet.remplacer la valeur de chaîne dans config.php

Le premier est system.php, qui contient la logique d'application du trou. ici son code:

<?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"); 
?> 

2ème est config_system.php, qui contient la configuration logic.here son code:

<?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; 

     } 
    } 
?> 

et 3ème est config.php, qui détient les configurations.

<?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"   => "" 
     ] 
    ]; 

?> 

Maintenant je veux changer un réglage via une fonction. Comment puis-je le faire?

Répondre

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

Utilisez cette fonction dans votre config_system.php

+0

merci Hay pour la réponse. mais la fonction montre une erreur. exploser() attend au moins 2 paramètres – sohidulpaltan

+0

désolé pour erreur typo .. It –