문제

PHP에서 프레임 워크를 만들고 있으며 몇 가지 구성 파일이 필요합니다. 이 파일 중 일부는 불가피하게 많은 항목을 가지고 있습니다.

이 구성 파일에 가장 적합한 형식은 무엇입니까?

다음은 최상의 정량화입니다.

  1. PHP에 의해 쉽게 구문 분석되었습니다. 구문 분석 코드를 작성할 필요가 없다면 좋을 것입니다. 그러나 이것은 거래 차단기가 아닙니다.
  2. 많은 항목이있는 경우에도 인간이 쉽게 읽을 수 있습니다.
  3. 널리 사용되는 표준이며 사용자 정의 형식이 없습니다
  4. 간결하게 감사합니다

나는 XML을 사용하기 시작했지만 명백한 이유로 빨리 포기했습니다. 나는 JSON과 YAML을 생각했지만 다른 것이 무엇인지보고 싶었습니다.

도움이 되었습니까?

해결책

INI 파일 형식은 어떻습니까? 사실상 구성 파일 표준이며 PHP는 해당 형식의 내장 파서가 있습니다.

parse_ini_file

다른 팁

Yaml은 좋은 선택입니다.http://www.yaml.org/

매우 간단하고 강력합니다

루비 프로젝트는 구성에 많이 사용합니다.

구성에 PHP 파일을 사용하지 않는 이유는 무엇입니까?

이점은 분명합니다.

  • 가능한 오류가 자동으로 잡히게됩니다
  • 사용자 정의 파서를 사용/만들 필요가 없습니다
  • PHP 프로그래머가 널리 이해합니다
  • 예를 들어 개발을위한 사용자 정의 구성, 생산을위한 다른 구성, 등급 등 사용자 정의 로직을 가질 수 있습니다.

Django 및 Rails와 같은 다른 프레임 워크는 스크립트 인 구성 파일을 사용합니다.

또 다른 옵션은 JSON을 사용하고 사용하는 것입니다 json_encode 그리고 json_decode.

구성 매개 변수에서 더 풍부한 데이터 구조를 사용할 수 있습니다.

개인적으로 나는 클래스에서 구성 데이터를 작성하는 것을 좋아합니다.

class appNameConfig {
    var $dbHost = 'localhost';
    var $dbUser = 'root';
    //...
 }

그런 다음 당신이해야 할 일은

$config = new appNameConfig;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);

구성을 변경하려면 클래스와 함께 파일을 읽는 것입니다. 다음과 같은 기능을 사용합니다.

function updateConfig($parameter, $value) {
    $fh = fopen('config.php', 'w+');
    while(!feof($fh)) {
        $file .= fgets($fh);
     }
    $fileLines = explode("\n", $file);
    for($i=0;$i<count($fileLines);$i++) {
        if(strstr($fileLines[$i], $parameter)) {
            $fileLines[$i] = "$" . $parameter . " = '" . $value . "'";
         }
     }
    $file = implode("\n", $fileLines);
    fwrite($fh, $file);
    fclose($fh);
 }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top