2009-08-07 9 views
10

좋은 설정 파일 형식이 필요합니다. 테이블 스키마에 넣을 계획입니다. 심포니 (symfony), 루비 레일 (ruby on rails) 등등. 설정 파일을위한 최상의 파일 형식은 무엇입니까? Yaml 또는 XML 또는 JSON 인코딩 파일? 이 목적에 가장 적합한 것은 무엇입니까?구성 파일에 가장 적합한 파일 형식은 무엇입니까?

+0

당신은 당신이 더 많은 질문을 받아 들일 경우, 당신이 바로, 더 담당자를 얻을 수 있음을 알 수 있습니까? –

답변

13

다른 사람들이 언급했듯이 많은 옵션이 있습니다. 그렇게 할 수있는 정말 좋은 이유가 없다면 (예 : 파서를 작성하지 마십시오.)그냥 옵션을 평가 :

  • 당신이
  • 은 당신이 원하는 마십시오 (다른 언어로) 내 응용 프로그램 외부의 아무 곳이나이 데이터에 액세스해야합니까 사용자 (또는 자신) 간단한 텍스트 편집기를 사용하여 파일을 편집 할 수 있도록
  • 가 거꾸로 예를 들어, 사용 된 언어

의 이전 버전과의 호환성을해야합니까, PHP는 매우 쉽게 직렬화()와 때 unserialize() 함수를 제공합니다. 그러나 형식은 사람이 쉽게 읽을 수 있고 편집 할 수는 없습니다 (XML도 읽기가 어려울 수 있지만 PHP 형식만큼 어렵지는 않습니다.) 파이썬의 피클 모듈은 훨씬 더 나쁩니다. 다른 언어로 데이터에 액세스해야하는 경우 이는 잘못된 선택입니다. 그리고 다른 사람들에 대해서 생각해보십시오 - 저는 최근에 파이썬 프로젝트의 Horde 프로젝트에서 직렬화 된 PHP 데이터를 구문 분석하는 데 모자를 씁니다! JSON은 인간이 편집 할 수 있고 모든 주요 언어가 요즘 JSON을 지원하는 사람이 읽을 수있는 형식 (압축 형식이 아닌 "예쁜 인쇄물"인 경우)이 있기 때문에 훨씬 더 나은 선택입니다. 그러나 이전 버전과의 호환성을 잃게됩니다. Python을 사용하려면 JSON에 버전 2.6 이상이 필요합니다.

+1

나는 대답의 한 부분으로 문제를 쓴다. 인간이 XML을 쉽게 읽고 편집 할 수없는 이유는 무엇인가? 그게 큰 장점 중 하나입니다. JSON보다 더 자세한 정보이며 JSON에는 아무런 문제가 없습니다. – ViennaMike

+1

PHP의 직렬화 형식이나 비단뱀 피클보다 훨씬 읽기 쉽습니다. 그러나 그것은 또한 매우 장황합니다. 나는 읽을 때 혼란스럽고 쓸 때 귀찮습니다. 거기에는 이유가있는 "XML 편집기"라는 전체 소프트웨어 범주가 있습니다.) – c089

+0

"쉽게 읽을 수 없다"라는 대답을 변경했습니다. – c089

1

무엇을 넣을 계획입니까? 사용자 정의 태그와

  • XML은
  • 키 - 값 쌍 각각의 새로운 라인
  • SQLite는에 :

    당신은 옵션의 부하가?

+1

응용 프로그램을 설정하기 위해 SQLite 클라이언트 도구가 필요하며 SQL 쿼리에 익숙해야하므로 SQLite를 구성으로 사용하지 않는 것이 좋습니다. – RaYell

13

*.ini는 XML 파일을 읽을 수있는 대부분의 프로그래밍 langauge privide API 등이 목적에 가장 parse_ini_file()

$config = parse_ini_file('/path/to/config/file', true); 
echo $config['MyApp']['var2']; 
+0

좋은 답변입니다. 특히 장기간 언어 범위가 PHP로 유지되는 경우. 내 응용 프로그램에서 .ini 파일을 항상 "제어 및 제어 도구"로 사용합니다. – pimbrouwers

+0

ini는 여러 줄을 지원합니까? – starbeamrainbowlabs

2

XML을 사용하여 쉽게 읽을 수

[MyApp] 
var1 = "foo" 
var2 = "bar" 

[MyPlugin] 
var1 = "qwe" 

꽤 잘되어야합니다 .

+9

XML 유지 관리가 쉽지 않습니다. –

+2

... XML이 느립니다! – Marecky

+0

xml은 악마에 의해 만들어집니다. – slier

0

줌라는 최근에 ini 파일을 JSON 인코딩 파일로 전환했습니다. json_encode()json_decode()을 사용하여 인코딩 및 디코딩 json은 ini 파일을 읽고 쓰는 것보다 효과적입니다.

그러나 단점이 있습니다. json은 사람이 쉽게 읽을 수 없습니다. 구성 파일을 인코딩하려면 PHP 스크립트를 사용해야합니다. 웹 사이트의 관리자 부분에 구성을 쓰고 싶을 때이 솔루션을 잘 사용할 수 있습니다.

+5

JSON은 표준 PHP 직렬화 형식과는 달리 사람이 읽을 수있는 편이라고 말할 수 있습니다. –

3

JSON은 제 의견으로는 좋은 선택입니다. 당신은 같은 데이터베이스 스키마를 정의 할 수 있습니다 : 그럼 그냥 PHP는 배열로를 설정하는 json_decode를 사용

{ 
    table1: { 
     id: { 
      type:"int", 
      autoincrement:true 
     }, 
     some_field: { 
      type:"string", 
     } 
    }, 
    table2: { // etc 
    } 
} 

.

$tables = json_decode($json_text); 
foreach ($tables as $tablename => $t) { 
    foreach ($t as $fieldname => $field) { 
     echo "Table {$tablename} has a record called {$fieldname}"; 
    } 
} 

이 인쇄 것입니다 : Table table1 has a record called id Table table1 has a record called some_field

JSON 내 의견으로는 XML, 및로 json_encode보다 작업하기가 훨씬 쉽다/디코딩은 매우 빠른 약간의 오버 헤드가 그래서입니다. 제 생각에는 XML보다 훨씬 읽기 쉽고 INI 파일보다 복잡한 데이터 구조를 더 잘 대처할 수 있습니다. 어떤 사람들은 YAML을 선호하지만 실제로 구문에는 그다지 차이가 ​​없습니다.

1

내 취향은

  1. 잘 문서화 PHP 파일입니다
  2. 사용자의 특정 구성에 대한
  3. 데이터베이스

워드 프레스와 수많은 PHP 애플리케이션은

0

를 사용하는 사람은 정말 당신을 준 것처럼 이미 좋은 답변. 개인적으로 .ini 파일이 문서 루트 외부에 있습니다. 또한 귀하의 파일이 귀하의 웹 서버에서만 읽을 수 있고 쓰기 가능하지 않은지 확인하십시오 (Linux 호스팅 환경 인 경우).

그러면 INI 파일을 간단히 구문 분석하고 그런 구성 설정을 사용할 수 있습니다. (PHP와 같은 언어를 사용하는 경우 JavaScript가 작동하지 않습니다.)

하지만 그들은 그렇게 말합니다. 그것은 모두 당신이 당신의 설정 파일에 갖고 싶은 데이터와 함께 할 일에 달려 있습니다.

감사 콘래드 C '')

관련 문제