'Programming/PHP'에 해당하는 글 117건

var_export

Programming/PHP 2006. 11. 7. 19:45
var_export
변수의 표현을 출력하거나 문자열로 반환한다.

Description
mixed var_export( mixed expression [, bool return] )

이 함수는 넘겨진 변수에 대한 구조 정보를 반환한다.
두가지 차이를 제외하고, var_dump()와 동일하다.
첫번째는 반환하는 표현이 유효한 PHP 코드인 점이고, 두번째는 PHP 5에서 객체의 protectedprivate 속성을 반환하는 점이다.
이 함수의 두번째 인자를 TRUE로 사용해서 변수 표현을 반환하도록 할 수 있다.

<?php
$a = array( 1, 2, array( "a", "b", "c" ) );
var_export( $a );
?>
// output
array (
  0 => 1,
  1 => 2,
  2 =>
  array (
   0 => 'a',
   1 => 'b',
   2 => 'c',
  ),
)

<?php
$b = 3.1;
$v = var_export( $b, true );
echo $v;  // output: 3.1
?>
 

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

var_dump

Programming/PHP 2006. 11. 7. 19:40
var_dump
변수에 관한 정보를 출력한다.

Description
void var_dump( mixed expression [, mixed expression [, ...] ] )

이 함수는 형과 값을 포함하는 하나 이상의 표현을 구조화된 정보로 보여준다.
배열과 객체는 구조를 보여주기 위해서 재귀적으로 확장한다.
PHP 객체의 public 속성만을 출력으로 반환한다.
var_export()와 print_r()은 protected 및 private 속성도 반환한다.

<?php
$a = array( 1, 2, array( "a", "b", "c" ) );
var_dump( $a );
?>
// output
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
  }
}

<?php
$b = 3.1;
$c = true;
var_dump( $b, $c );
?>
// output
float(3.1)
bool(true)

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

unserialize

Programming/PHP 2006. 11. 7. 19:26
unserialize
저장된 표현에서 PHP 값을 생성한다.

Description
mixed unserialize( string str )

Return Values
unserialize()은 하나의 일렬화된 변수(serialize() 참고)를 받아서 PHP 값으로 변환하고, 변환한 값을 반환한다.
integer, float, string, array, object형이 될 수 있다.
unserialize 할 수 없는 문자열일 경우에는, FALSE를 반환한다.

변수가 객체로 unserialize되고, 성공적으로 객체로 재구성되면, PHP는 자동적으로 __wakeup() 멤버 함수를 호출한다.

* unserialize_callback_func 지시어: unserialize중에 정의되지 않은 클래스를 작성해야 할 경우에 콜백 함수를 호출할 수 있다.

<?php
/* unserialize_callback_func 예 */
$serialized_object = 'O:1:"a":1:{s:5:"value";s:3:"100";}';
ini_set( 'unserialize_callback_func', 'mycallback' ); // 콜백 함수 설정
function mycallback($classname)
{
  // 단지 클래스를 정의하는 파일을 포함
  // 어떤 클래스 정의가 필요한가는 $classname에서 얻을 수 있다.
}
?>

<?php
/* unserialize() 예제 */
// DB에서 가져온 문자열로부터 $session_data 배열에 세션 데이터를 읽어들일 때 unserialize()를 사용한다.
$conn = odbc_connect( "webdb", "php", "chicken" );
$stmt = odbc_prepare( $conn, "SELECT data FROM sessions WHERE id = ?" );
$sqldata = array( $PHP_AUTH_USER );
if ( !odbc_execute( $stmt, &$sqldata ) || !odbc_fetch_into( $stmt, &$tmp ) ) {
  // excute나 fetch가 실패하면, 빈 배열로 초기화한다.
  $session_data = array();
} else {
  // 여기서는 일렬화된 데이터를 $tmp[0]에 가진다.
  $session_data = unserialize( $tmp[0] );
  if ( !is_array( $session_data ) ) {
    // 무언가 잘못되면, 빈 배열로 초기화합니다.
    $session_data = array();
  }
}
?> 

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

serialize

Programming/PHP 2006. 11. 7. 19:07
serialize
값의 저장 표현을 생성한다.

Description
string serialize( mixed value )

Return Values
serialize()는 어디든 저장할 수 있도록 value의 바이트 스트림 표현을 포함하는 문자열을 반환한다. 이는 PHP 값을 저장하거나 전달할 때 형이나 구조를 잃어버리지 않게 한다.

serialize된 문자열을 다시 PHP 변수로 만들 때는, unserialize()를 사용한다.
serialize()는 resource형을 제외한 모든 형을 다룬다.
심지어 자기 자신을 참조하는 배열을 serialize()할 수도 있다.
배열/객체 안의 참조는 serialize()할 때 저장된다.
객체를 일렬화할 때, 일렬화에 앞서 __sleep() 멤버 함수를 호출한다.
이는 일렬화하기 전에 객체를 마지막으로 정리할 수 있도록 한다.
비슷하게, unserialize()을 사용하려 객체를 되돌릴 때, __wakeup() 멤버 함수를 호출합니다.
<?php
// $session_data는 현재 사용자의 세션 정보를 다차원 배열로 가진다.
// 요청의 마지막에 이것을 데이터베이스에 저장하기 위해 serialize()를 사용한다.
$conn = odbc_connect( "webdb", "php", "chicken" );
$stmt = odbc_prepare( $conn, "UPDATE sessions SET data = ? WHERE id = ?" );
$sqldata = array ( serialize( $session_data ), $PHP_AUTH_USER );

if (!odbc_execute( $stmt, &$sqldata ) ) {
  $stmt = odbc_prepare( $conn, "INSERT INTO sessions ( id, data ) VALUES( ?, ? )" );
  if ( !odbc_execute( $stmt, &$sqldata ) ) {
      /* 무언가 잘못되었을 때 할 일.. */
  }
}
?>

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

empty

Programming/PHP 2006. 11. 7. 18:58
empty
변수가 비어있는지 검사한다.

Description
bool empty( mixed var )

Return Values
  • "" (빈 문자열)
  • 0 (정수 0)
  • "0" (문자열 0)
  • NULL
  • FALSE
  • array() (빈 배열)
  • var $var; (클래스에 값이 없이 선언된 변수)
empty()는 var가 비어있지 않고 제로가 아닌 값이라면 FALSE를 반환한다.
즉, "", 0, "0", NULL, FALSE, array(), var $var, 비어있는 속성의 객체를 비어있는 것으로 판단한다. var가 비어있다면 TRUE를 반환한다.

<?php
/* 간단한 empty() / isset() 비교 */
$var = 0;

// $var가 비어있기 때문에 true로 판단
if ( empty( $var ) ) {
  echo '$var is either 0, empty, or not set at all';
}

// $var가 지정되어 있기 때문에 true로 판단
if ( isset( $var ) ) {
  echo '$var is set even though it is empty';
}
?>
 
이것은 함수가 아닌 언어 구조이기 때문에, 변수 함수 방식으로 호출할 수 없다.
구문 에러일 경우를 제외하고 empty()은 변수를 확인할 뿐이다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,