2017-01-01 9 views
0

나는 'init.php'파일을 가지고있어. 이것은 세션을 시작하고, 일부 설정과 그런 종류의 것들을 설정하는 데 사용됩니다. 나는이 줄을 사용하여이 파일에 전화 : 이것은 내 의견으로는 완벽하게 작동무엇이 가장 좋은 방법은 설정 파일을 편집하는 것입니다 PHP에서

require_once 'core/init.php'; 

. 이제 다음 스크립트를 작성하여 init.php 파일에서 설정을 호출하는 것이 매우 쉬워졌습니다.

Config::get('settings/main_color') 

이 물론 매우 쉽습니다 :

class Config { 
    public static function get($path = null) { 
     if ($path){ 
      $config = $GLOBALS['config']; 
      $path = explode('/', $path); 

      foreach($path as $bit) { 
       if(isset($config[$bit])) { 
        $config = $config[$bit]; 
       } 
      }  
      return $config; 
     }  
     return false; 
    } 
} 

그래서 지금은 설정을 사용하는 내 다른 페이지에 코드 줄을 사용할 수 있습니다. 하지만 이제 파일을 직접 변경하지 않고도 설정을 편집하고 싶습니다. 브라우저에서 스크립트로 모두 수행해야합니다. 내 init.php의 나머지는 다음과 같이 글로벌 외모를 설정 :

Config::update('settings/main_color','blue') 

이를 달성하는 가장 좋은 방법은 무엇입니까 :

$GLOBALS['config'] = array(
    'mysql' => array(
     'host' => 'localhost:3307', 
     'username' => 'root', 
     'password' => 'usbw', 
     'db' => 'webshop' 
    ), 
    'remember' => array(
     'cookie_name' => 'hash', 
     'cookie_expiry' => 604800 
    ), 
    'sessions' => array(
     'session_name' => 'user', 
     'token_name' => 'token' 
    ), 
    'settings' => array(
     'main_color' => '#069CDE', 
     'front_page_cat' => 'Best Verkocht,Populaire Producten', 
     'title_block_first' => 'GRATIS verzending van €50,-', 
     'title_block_second' => 'Vandaag besteld morgen in huis!', 
    ), 
    'statics' => array(
     'header' => 'enabled', 
     'title_block' => 'enabled', 
     'menu' => 'enabled', 
     'slideshow' => 'enabled', 
     'left_box' => 'enabled', 
     'email_block' => 'enabled', 
     'footer' => 'enabled', 
     'keurmerken' => 'enabled', 
     'copyright' => 'enabled' 
    ) 
); 

내가 바라는 것은이 같은 솔루션은? str_replace를 사용하고 파일의 단어를 바꿉니 까? 이 일을하는 더 좋은 방법이 있기를 바랍니다. 나를 도울 수 있다면 매우 기쁠 것입니다.

편집 : (내 전체 init.php 파일)

<?php 
session_start(); 

define('DS',DIRECTORY_SEPARATOR); 

$GLOBALS['config'] = json_decode(__DIR__.DS.'prefs.json', true); 

spl_autoload_register(function($class) { 
    require_once 'classes/' . $class . '.php'; 
}); 

require_once 'functions/sanitize.php'; 
require_once 'functions/statics.php'; 
require_once 'functions/pagination.php'; 

if(Cookie::exists(Config::get('remember/cookie_name')) && !Session::exists(Config::get('sessions/session_name'))) { 
    $hash = Cookie::get(Config::get('remember/cookie_name')); 
    $hashCheck = DB::getInstance()->get('users_session', array('hash', '=', $hash)); 

    if($hashCheck->count()) { 
     $user = new User($hashCheck->first()->user_id); 
     $user->login(); 
    } 
} 

$_link = DB::getConnected(); 

$url_parts = explode('/',$_SERVER['REQUEST_URI']); 
$current = $url_parts[count($url_parts)-2]; 

if($current == 'page'){ 
    $_SESSION['location'] = 1; 
} 
else{ 
    $_SESSION['location'] = 0; 
} 

답변

0

이 다소 의견을 기반으로,하지만 난 config 파일을 구문 분석 JSON 또는 XML 파일을 사용합니다. update은 파일을 호출하고 파싱 한 다음 다시 저장합니다. /core/init.php

$GLOBALS['config'] = json_decode(__DIR__.DS.'prefs.json', true); 
하여 업데이트

/core/prefs.json

{"mysql":{"host":"localhost:3307","username":"root","password":"usbw","db":"webshop"},"remember":{"cookie_name":"hash","cookie_expiry":604800},"sessions":{"session_name":"user","token_name":"token"},"settings":{"main_color":"#069CDE","front_page_cat":"Best Verkocht,Populaire Producten","title_block_first":"GRATIS verzending van €50,-","title_block_second":"Vandaag besteld morgen in huis!"},"statics":{"header":"enabled","title_block":"enabled","menu":"enabled","slideshow":"enabled","left_box":"enabled","email_block":"enabled","footer":"enabled","keurmerken":"enabled","copyright":"enabled"}}

의사 코드

:

class Config 
    { 
     public static function update($path,$value) 
      { 
       # Fetch the file and convert it to json 
       $file = json_decode(file_get_contents(CONFIG_PATH),true); 
       # Do some code that will update the value.... 

       # Save file back 
       file_put_contents(CONFIG_PATH,json_encode($data)); 

       # Call your prefs to GLOBALS function here so the settings 
       # are updated in your global array 
      } 
    } 
+0

그리고 너 알지? 그녀의 방식으로 JSON을 사용하지 않고? –

+0

XML 파일이지만 Json은 더 간단합니다 – Rasclatt

+0

하지만 get() 함수를 사용할 때이 메서드 (JSON)가 여전히 작동합니까? –