parse_ini.php 는 Parse INI 사용에 도움되기 위한 기본 설명서입니다.

Parse INI 에서 필요한 library 는 다음과 같습니다.

  1. parse_ini.php
    INI 내용을 저장하거나 가져 옵니다.

사용 가능한 목록.

Parse INI 클래스에서 사용할 수 있는 메소드 목록을 설명합니다.

  • Context( option )

    Context 를 설정합니다.

    • option: 배열 목록.
      Get_file(), Put_file() 에만 동작합니다.
    • 							
      $ini = new parse_ini;
      $ini->Context( array( 'http' => array('method' => 'POST') ) );
      print_r($ini->Put('data.txt', $data));
  • Added( option )

    INI 파일 상단에 문자열(또는 주석)을 추가합니다.

    • option: 주석 처리할 배열 목록.
      Put_file() 에만 동작하며 앞에 ; 와 같은 주석이 붙지 않습니다.

    							
    $ini = new parse_ini;
    $ini->Added( array( ';안녕하세요.', ';하보니입니다.' ) );
    
    
    $data = array(
    	'username' => array( 'habony'=>'101', 'palms'=>'102' );
    );
    print_r($ini->Put('data.txt', $data));
    /*
    결과:
    
    ;안녕하세요.
    ;하보니입니다.
    
    [username]
    habony = 101
    palms = 102
    */
  • Append( material, data )

    기존 파일 끝에 문자열(또는 주석)을 추가하여 업데이트 합니다.
    (주의: 여기서 Put() 를 호출할 필요 없습니다.)

    • material: 파일 이름
    • data: 작성할 문자열(또는 배열 목록)

    							
    $ini = new parse_ini;
    
    $data = array( 'user ip', 'habony', 'email' );
    print_r($ini->Append('data.txt', $data));
    /*
    결과:
    
    user ip
    habony
    email
    */
  • Get( material )

    INI 형식의 파일에서 배열로 얻습니다.

    • material: 파일 이름.

    							
    $ini = new parse_ini;
    print_r($ini->Get('data.txt'));
  • Put( material, data )

    배열을 INI 파일로 작성합니다.

    • material: 파일 이름. 파일이 없으면 새로 만듭니다.
    • data: 작성할 배열.
      1차원 베열이면 주석 처리되고, 2차원 배열이면 key 와 value 의 값이 저장됩니다.

    							
    $ini = new parse_ini;
    
    $data = array(
    	'username' => array( 'habony'=>'101', 'palms'=>'102' );
    	'email' => array( 'user_id_01'=>'gmail.com', 'user_id_02'=>'habonyphp.com' );
    );
    
    print_r($ini->Put('data.txt', $data));
    /*
    결과:
    
    [username]
    habony = 101
    palms = 102
    
    [email]
    user_id_01 = gmail.com
    user_id_02 = habonyphp.com
    */
  • Update( material, data, sum )

    INI 파일을 불러와 새로운 배열을 INI 파일에 덮어쓰기 합니다.
    1차원 베열이면 주석 처리되고, 2차원 배열이면 key 와 value 의 값이 저장됩니다.

    • material: 파일 이름
    • data: 덮어 쓰기할 INI 배열 목록.
    • sum: 덮어 쓰기할 때 합계를 할지를 결정. true 이면 합의 값을 업데이트합니다.
      단, value 값이 정수이면 합을 하고, 아니면 새로운 값으로 업데이트 합니다.

    							
    /*
    data.txt 파일 내용
    
    	[username]
    	user ip = '127.0.0.1'
    	user_id = 'habony'
    	user_email = 'my_email'
    */
    
    $ini = new parse_ini;
    $new['username'] = array( 'user_id' => 'php' );
    print_r($ini->Update('data.txt', $new));
    /*
    결과:
    
    [username]
    user_ip = '127.0.0.1'
    user_id = 'php'
    user_email = 'my_email'
    */
  • Copy_to( old, new )

    old 파일을 new 파일로 복사합니다.

    • old: 원본 파일 이름
    • new: 복사할 파일 이름

  • Sum( shoal )

    다수 INI 파일을 불러와 배열 값 들의 합을 반환합니다.
    단, value 값이 정수이면 합을 하고, 아니면 새로운 값으로 업데이트 합니다.

    • shoal: 문자열(또는 배열)

    							
    ex.1)
    // 다수 파일의 합을 반환합니다.
    $ini = new parse_ini;
    $list = $ini->Sum( array('data.2015.10.08.php', 'data.2015.10.09.php') );
    print_r($list);
    
    ex.2)
    // glob 를 이용해 다수 파일의 값의 합을 계산합니다.
    $ini = new parse_ini;
    $list = $ini->Sum('data.2015*');
    print_r($list);
  • Sorting( list, sort, reverse )

    사용자 INI 배열을 정렬합니다.

    • list: 정렬할 INI 배열
    • sort: 'key' or null
      'key' 이면 key 값을 정렬하고, null 이면 value 값을 정렬 합니다.
    • reverse: true or false
      true 이면 내림 차순 정렬, null 이면 올림 차순 정렬 합니다.

    									
    ex.1)
    // 파일을 key 값을 기준으로 올림 차순 정렬합니다.
    $ini = new parse_ini;
    $list = $ini->Sorting($ini->Get('data.2015.10.08.php', 'key'));
    /*
    결과:
    
    [username]
    email = 4
    id = 32
    name = 13
    u_name = 1
    */
    
    ex.2)
    // 2015 로 시작하는 파일들의 합의 값을 value 값을 기준으로 내림 차순 정렬합니다.
    $ini = new parse_ini;
    $list = $ini->Sorting($ini->Sum('data.2015*'), null, true);
    /*
    결과:
    
    [username]
    id = 32
    name = 13
    email = 4
    u_name = 1
    */
  • Combined( data, list, sum )

    원본 INI 배열 목록에 새로운 INI 배열로 덮어쓰기 합니다.

    • data: 원본 INI 배열 목록
    • list: 덮어 쓰기할 INI 배열 목록.
    • sum: true 이면 INI 배열 값 들의 합을 계산하여 업데이트합니다.

    							
    $ini = new parse_ini;
    
    // 원본 INI 배열 목록
    $data['username'] = array( 'user ip'=>'127.0.0.1', 'user_id'=>'habony', 'user_price'=>12 );
    
    // 덮어 쓰기할 INI 배열 목록
    $new['username'] = array( 'user_id' => 'php', 'user_price'=>3 );
    
    print_r($ini->Combined($data, $new, true));
    /*
    결과:
    
    Array(
    	'username' =>
    		Array(
    			'user_ip' = '127.0.0.1',
    			'user_id' = 'php',
    			'user_price' = 15
    		)
    );
    */
  • Disassemble( data )

    INI 문자열에서 INI 배열로 만듭니다.

    • data: INI 문자열.

    							
    $ini = new parse_ini;
    
    $data = "
    [username]
    user_id = 1
    user_name = "habony"
    user_email = "my_email"
    ";
    
    print_r($ini->Disassemble($data);
    /*
    결과:
    
    Array(
    	'username' =>
    		Array(
    			'user_id' => 1,
    			'user_name' => 'habony',
    			'user_email' => 'my_email'
    		)
    );*/
  • Assemble( data )

    INI 배열을 파일에 작성할 INI 문자열로 만듭니다.

    • data: Parse INI 내용.

    							
    $ini = new parse_ini;
    
    $data = array( 
    	'username' => 
    		array( 
    			'user_id' => 1,
    			'user_name' => "habony",
    			'user_email' = "my_email"
    		)
    );
    
    print_r($ini->Assemble($data);
    /*
    결과:
    
    [username]
    user_id = 1
    user_name = "habony"
    user_email = "my_email"
    */
  • Get_file( material )

    파일의 내용을 읽어 옵니다.

    • material: 파일 이름.

  • Put_file( material, str, mode )

    파일에 문자열을 저장합니다.

    • material: 파일 이름.
    • str: 저장할 문자열.
    • mode: true 이면 덮어 쓰기 합니다.

반환되는 에러 목록

INI 을 배열로 만들거나 읽기 중 에러가 발생하면 $this->error 에 저장될 에러 목록을 설명합니다.

  • 파일이 존재하지 않을 때 출력되는 에러입니다.
    					
    array(
    	'code' => 101,
    	'name' => "파일 이름",
    	'message' => "File Not Found."
    );
  • 파일에 문자열 작성에 실패하였을 때 출력하는 에러입니다.
    					
    array(
    	'code' => 102,
    	'name' => "파일 이름",
    	'message' => "Failed to write file."
    );
  • old 파일을 new 파일로 복사에 실패하였을 때 출력하는 에러입니다.
    					
    array(
    	'code' => 103,
    	'name' => "새로운 파일",
    	'message' => "Failed to copy the files."
    );

INI 작성

형식: Put( material, data );

Example #1

						
<?php
define("HABONYPHP_DIRNAME", "../");

require_once(HABONYPHP_DIRNAME . "library/parse_ini.php");

$ini = new parse_ini;

$data = array(
	'username' => array( 
		'habony'=>'101',
		'palms'=>'102' 
	);
	'email' => array( 
		'user_id_01' => 'gmail.com', 
		'user_id_02' => 'habonyphp.com'
	);
);

print_r($ini->Put('data.txt', $data));
/*
결과:

[username]
habony = 101
palms = 102

[email]
user_id_01 = gmail.com
user_id_02 = habonyphp.com
*/

?>

INI 자료 출력

형식: Get( material );

Example #1

INI 자료 출력의 기본적인 작성 방법입니다.

						
<?php

define("HABONYPHP_DIRNAME", "../");

require_once(HABONYPHP_DIRNAME . "library/parse_ini.php");

/*
data.txt 파일 내용
	[username]
	habony = 101
	palms = 102

	[email]
	user_id_01 = gmail.com
	user_id_02 = habonyphp.com
*/
$ini = new parse_ini;
print_r($ini->Get('data.txt'));
/*
결과:

Array(
	'username' => array( 
		'habony'=>'101',
		'palms'=>'102' 
	);
	'email' => array( 
		'user_id_01' => 'gmail.com', 
		'user_id_02' => 'habonyphp.com'
	);
);
*/

?>

INI 자료 업데이트

형식: Update( material, data, sum );

Example #1

기존 INI 파일을 새로운 INI 배열에 업데이트 합니다.

						
<?php

define("HABONYPHP_DIRNAME", "../");

require_once(HABONYPHP_DIRNAME . "library/parse_ini.php");

/*
data.txt 파일 기존 내용
	[username]
	habony = 101

	[email]
	user_id = 'gmail.com'
*/
$ini = new parse_ini;

$data = array(
	'email' => array(
		'user_id' => 'habonyphp.com'
	)
);
print_r($ini->Update( 'data.txt', $data ));
/*
결과:

[username]
habony = 101

[email]
user_id = 'habonyphp.com'
*/

?>

Example #2

기존 INI 파일에 새로운 INI 배열의 합의 값을 업데이트 합니다.

						
<?php

define("HABONYPHP_DIRNAME", "../");

require_once(HABONYPHP_DIRNAME . "library/parse_ini.php");

/*
data.txt 파일 기존 내용
	[username]
	habony = 101

	[email]
	user_id = 'gmail.com'
*/
$ini = new parse_ini;

$data = array(
	'username' => array(
		'habony' => 102
	),
	'count' => array(
		'key' => 12,
		'value' => 'php'
	)
);
print_r($ini->Update( 'data.txt', $data, true ));
/*
결과:

[username]
habony = 203

[email]
user_id = 'gmail.com'

[count]
key = 12
value = 'php'
*/

?>

INI 자료에 사용자 주석 넣기.

Example #1

파일 내부에 사용자 주석을 만들어 사용할 수 있습니다.
1차원 배열이면 자동으로 주석 처리 됩니다.

						
<?php

define("HABONYPHP_DIRNAME", "../");

require_once(HABONYPHP_DIRNAME . "library/parse_ini.php");

$ini = new parse_ini;

$data = array(
	'사용자 이름',
	'username' => array(
		'user_name' => 'habony'
	),
	
	'사용자 이메일',
	'user_email' => array(
		'email' => 'habonyphp@example.com'
	)
);
$list = $ini->Put('data.txt', $data);
print_r($list);
/*
결과:

;사용자 이름
[username]
user_name = 'habony'

;사용자 이메일
[user_email]
email = 'habonyphp@example.com'
*/

?>

Example #2

파일에 중요한 환경 설정 정보가 있다면 Added() 를 이용해서 파일을 보호할 수 있습니다.

						
<?php

define("HABONYPHP_DIRNAME", "../");

require_once(HABONYPHP_DIRNAME . "library/parse_ini.php");

$ini = new parse_ini;

/*
	파일 상단에 주석 내용을 만듭니다.
	Added( array ) 로 작성되는 배열은 앞에 
	주석이 붙지 않으므로 강제로 ; 를 붙이세요.
*/
$ini->Added(
	array(
		'; 접근이 금지된 파일입니다.',
		'; <a href="http://example.com">홈으로 이동 >> </a>',
		'; <?php exit(); ?>'
	)
);
$data = array(
	'사용자 이름',
	'username' => array(
		'user_name' => 'habony'
	),
	
	'사용자 이메일',
	'user_email' => array(
		'email' => 'habonyphp@example.com'
	)
);
$list = $ini->Put('data.txt', $data);
print_r($list);
/*
결과:

; 접근이 금지된 파일입니다.
; <a href="http://example.com">홈으로 이동 >> </a>
; <?php exit(); ?>

;사용자 이름
[username]
user_name = 'habony'

;사용자 이메일
[user_email]
email = 'habonyphp@example.com'
*/

?>

문자열을 파일의 끝에 넣기.

형식: Append( material, data );

Example #1

기존 파일에 일반 문자열을 파일의 끝에 추가할 수 있습니다.

						
<?php

define("HABONYPHP_DIRNAME", "../");

require_once(HABONYPHP_DIRNAME . "library/parse_ini.php");

/*
data.txt 파일 기존 내용
	[username]
	habony = 101

	[email]
	user_id = 'gmail.com'
*/
$ini = new parse_ini;

/*
	파일 밑단에 문자열을 만듭니다.
	Append( array ) 로 작성되는 배열은 앞에 
	주석이 붙지 않으므로 강제로 ; 를 붙이세요.
*/
$data = $ini->Append( 
	'data.txt', 
	array(
		'; 사용자 문자열',
		'; 안녕하세요.',
		'; 하보니입니다.'
	) 
);
print_r($data);
/*
결과:

[username]
habony = 101

[email]
user_id = 'gmail.com'

; 사용자 문자열
; 안녕하세요.
; 하보니입니다.
*/

?>