2017-02-23 3 views
0

PHPで設定クラスを作ることは可能ですか?そして、すべての「キー」は区切り文字によって(PHP関数)爆発さ
echo Config::get('database/main/username');PHPで設定クラスファイルを作る方法

:あなたは$ GLOBALS [「設定」]を取得するために(例えば)と呼ばれているし、キーを必要とする
ファースト'/'の場合、すべての 'キー'が再びメインキーに追加されます。メインキーは$GLOBALS['config']で、全体の構成の配列を持っています。


だから、すべてのキーが定義されている必要があり、これまで


私のコードをされる( foreachのをしようとして)、配列の数が何であるかを知るために「数」を追加します。

<?php 
    $GLOBALS['config'] = array(
     "database" => array(
      "username" => 'root', 
      "password" => '', 
      'host' => '127.0.0.1', 
      'name' => 'thegrades' 
     ), 
    ); 
    class Config 
    { 
     public static function get($key = null) 
     { 
      $count = 0; 
      $key = explode("/", $key); 
      if(count($key) > 1){ 
       $mainkey = $GLOBALS['config']; 
       foreach($key as $value){      
        $mainkey .= [$key[$count]]; 
        $count++; 
       } 
      } 
      return $mainkey; 
     } 
    } 
    var_dump(Config::get('database/host')); 
?> 
+0

なぜこの質問は下落しましたか? – Axis

+0

@Alex:あなたは構成クラスの改善のために解決したいと思っていましたか? –

+0

私はそれをする方法を学びたいと思うだけでなく、コードを持っている(btwはAxisです) – Axis

答えて

2

ローマへ行く途中で、これをリファクタリングして、必要なものを手に入れてください。

<?php 
$GLOBALS['config'] = array(
    "database" => array(
     "username" => 'root', 
     "password" => '', 
     'host' => '127.0.0.1', 
     'name' => 'thegrades' 
    ), 
); 
class Config 
{ 
    public static function get($key = null) 
    { 
     $keys = explode("/", $key); 
     $tmpref = &$GLOBALS['config']; 
     $return = null; 
     while($key=array_shift($keys)){ 
      if(array_key_exists($key,$tmpref)){ 
       $return = $tmpref[$key]; 
       $tmpref = &$tmpref[$key]; 
      } else { 
       return null;//not found 
      } 
     } 
     return $return;//found 
    } 
} 
var_dump(Config::get('database/host'));//127.0.0.1 
?> 
関連する問題