2017-02-23 1 views
0

PHP로 구성 클래스를 만들 수 있습니까?
먼저 당신은 $ GLOBALS를 얻을 필요가 [ '설정'] 다음 (예를 들어) 호출 된 키 : 그런 다음 모든 '키'가 폭발한다
echo Config::get('database/main/username');PHP에서 구성 클래스 파일을 만드는 방법

(하는 PHP 함수를) 구분에 의해 '/'이면 모든 '키'가 다시 기본 키에 추가됩니다. 기본 키는 $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

답변

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 
?> 
관련 문제