2012-08-01 4 views
0

내가 좋아하는 설정을 저장하는 PHP 설정 파일이 파일을 PHP에서 정의 설정이 비어 기본적으로동적으로 쓰기는 설정이

define("SETTING_1", ""); 
    define("SETTING_2", ""); 
    define("SETTING_3", ""); 

을, 그러나 나는 기본적으로의 사용자를 묻는 설치 프로그램 파일 install.php이 설정. 설정 파일을 열고 각 설정에 대한 정의를 찾고 값을 삽입하는 가장 좋은 방법은 무엇입니까? 마지막으로 설정 파일을 디스크에 저장해야합니다.

정규식 또는 간단한 문자열 검색을 사용하지 않으려합니다. 내가 token_get_all()을 발견했는데 그것을 사용하는 것이 합리적입니까?

답변

3

token_get_all() 정말 않을 것입니다 문자열에서 구문 분석 토큰을 ​​모두 제공 할 것이기 때문에 도움이됩니다. token_get_all()의 결과로 상태 머신이나 파서를 작성하는 데 더 많은 시간을 할애 할 수 있습니다. 그 값은 str_replace()을 사용하여 그 자리의 모든 그리고

define("SETTING_1", "{{SETTING_1}}"); 
define("SETTING_2", "{{SETTING_2}}"); 
define("SETTING_3", "{{SETTING_3}}"); 

을, 당신은 파일을 열고 교체 :

이를 위해 가장 쉬운 방법은 다음과 같이 알려진 독특한 자리의 일종을 사용하는 것입니다 :

$file = file_get_contents("config.php"); 
$config = str_replace( 
    array('{{SETTING_1}}', '{{SETTING_2}}', '{{SETTING_3}}'), 
    array($setting1, $setting2, $setting3), 
    $file 
); 
file_put_contents('config.php', $config); 

그게 전부입니다.

0

define() 방식이 명확합니까?

당신이 정말로 INI 파일을 PHP 형식, 사용 var_export (에있는) 다른 손에 완전히 안전하지 않은 인 포함 ... 또는 사용해야하는 경우, 즉 create ini file, write values in PHP

+0

정말요? 왜 .ini 파일을 사용하는 것보다 http://pastie.org/4368244와 같은 것이 더 안전하지 않습니까? 감사. – Justin

+0

@Justin 왜냐하면 내가보기에 당신에게는 두 가지 옵션이 있습니다 : 1) 수동으로 분석하십시오, 2) 직접적으로 포함 시키십시오 ... 옵션 2가 위험합니다, 누군가가 설정 파일을 손으로 수정하고 매번 해석 할 때 위험합니다 응용 프로그램이 실행됩니다. 그 이유는 내가 스크립트가 직접적으로 포함 된 파일을 수정하는 것을 허용하지 않기 때문입니다 ... 그리고 옵션 1은 설정을 저장하는 더 좋은 방법이 있기 때문에 효과가 없습니다 ... –

0

사용자 설정에 상수를 사용하지 마십시오. 그것은 나쁜 생각입니다. 배열을 만들고 두 번째 매개 변수 'true'를 사용하여 var_export를 사용하여 파일에 저장합니다. 읽기 가능하며 배열 함수를 사용하여 재생성 할 수 있습니다.