java - 파일 - 자바 프로퍼티란




PHP는 Java에서와 마찬가지로*.properties 파일을 허용합니까? (4)

Java에서와 같이 PHP에서 * .properties 파일을 사용하는 방법이 있습니까? 속성이나 XML 파일에 응용 프로그램 수준의 상수를 저장하고 코드 전체에서 쉽게 호출하고 싶습니다. 귀하의지도가 많이 감사드립니다. 감사.


PHP에서 .ini 파일은 거의 동일한 기능을 제공합니다. 이러한 파일에서 상수를 읽는 간단한 방법이 있습니다.

PHP 프레임 워크의 대부분은 대부분 확장자가 .php 인 구성 파일로 구현합니다.

예를 들어 cake php에는 Configure :: read ( 'VarName') 및 Configure :: write ( 'VarName', VarValue)와 같은 Configure 클래스가 있습니다.

일단 작성되면 파일 포함 범위에서 액세스 할 수 있습니다.


글쎄, 당신은 완벽하게 속성 파일에 몇 가지 설정을 넣고 자신을 파싱 할 수 있습니다. 그러나 PHP에서는 적절한 형식이 아닙니다.

몇 가지 상수를 정의하고 별도의 PHP 구성 파일 (예 : config.php)에 넣고 필요한 곳에 포함시킵니다.

다른 옵션은 실제로 구성을 XML 파일에 넣고 XML 라이브러리 에서 읽는 것입니다. YAML ( php.net )은 간단한 읽을 수있는 구성을위한 인기있는 옵션입니다.


배열을 포함하는 PHP 파일을 사용하여 데이터를 저장할 수도 있습니다. 예:

config.php

<?php 
return array(
    'dbhost' => 'localhost',
    'title'   => 'My app'
);

그런 다음 다른 파일에서 :

$config = require 'config.php':
echo $config['title'];

parse_ini_file 은 Java 환경의 *.properties 파일과 parse_ini_file 이 없습니다.

이 함수는 Java에서 상응하는 것과 동일한 기능을 수행합니다.

function parse_properties($txtProperties) {
    $result = array();
    $lines = split("\n", $txtProperties);
    $key = "";
    $isWaitingOtherLine = false;

    foreach($lines as $i=>$line) {
        if(empty($line) || (!$isWaitingOtherLine && strpos($line,"#") === 0)) continue;

        if(!$isWaitingOtherLine) {
            $key = substr($line,0,strpos($line,'='));
            $value = substr($line,strpos($line,'=') + 1, strlen($line));
        } else {
            $value .= $line;
        }

        /* Check if ends with single '\' */
        if(strrpos($value,"\\") === strlen($value)-strlen("\\")) {
            $value = substr($value, 0, strlen($value)-1)."\n";
            $isWaitingOtherLine = true;
        } else {
            $isWaitingOtherLine = false;
        }

        $result[$key] = $value;
        unset($lines[$i]);
    }

    return $result;
}

이 기능은 처음 에 내 블로그에 게시되었습니다 .





php