PHP 타입 소개
PHP 타입 소개 (Introduction)
PHP에서 표현식(expression) 하나하나는 값을 기준으로 다음 내장 타입 중 하나를 가져요.
nullboolintfloat(부동소수점 수)stringarrayobjectcallableresource
PHP는 동적 타입 언어예요. 즉 변수의 타입을 따로 지정할 필요 없이, 실행 시점(runtime)에 값에 따라 타입이 정해져요. 하지만 타입 선언(type declarations) 을 활용하면 언어의 일부 측면을 정적으로 타입을 지정할 수도 있어요. PHP 타입 시스템이 지원하는 서로 다른 타입들은 타입 시스템 페이지에서 확인할 수 있어요.
타입은 그 타입에 수행할 수 있는 연산의 종류를 제한해요. 그런데 만약 표현식·변수가 자기 타입이 지원하지 않는 연산에 쓰이면, PHP는 그 연산을 지원하는 타입으로 값을 타입 저글링(type juggling) 하려고 해요. 이 과정은 값이 쓰이는 문맥에 따라 달라져요. 자세한 내용은 타입 저글링 섹션을 참고하세요.
팁 — 서로 다른 타입의 값을 비교한 다양한 예시가 실려 있는 타입 비교 표도 유용하게 쓰일 수 있어요.
참고 — 타입 캐스트를 쓰면 표현식이 특정 타입으로 평가되도록 강제할 수 있어요. 변수는
settype()함수로 제자리에서 타입 캐스트할 수도 있고요.
표현식의 값과 타입을 함께 확인하려면 var_dump() 함수를, 타입만 알아내려면 get_debug_type() 함수를 써요. 다만 표현식이 특정 타입인지 확인할 때는 is_type 함수를 쓰는 게 맞아요.
예제 #1 — 서로 다른 타입
<?php
$a_bool = true; // a bool
$a_str = "foo"; // a string
$a_str2 = 'foo'; // a string
$an_int = 12; // an int
echo get_debug_type($a_bool), "\n";
echo get_debug_type($a_str), "\n";
// If this is an integer, increment it by four
if (is_int($an_int)) {
$an_int += 4;
}
var_dump($an_int);
// If $a_bool is a string, print it out
if (is_string($a_bool)) {
echo "String: $a_bool";
}
?>
위 예제를 PHP 8에서 실행한 출력 결과예요.
bool
string
int(16)
참고 — PHP 8.0.0 이전에는
get_debug_type()이 없어서 대신gettype()함수를 쓸 수 있었어요. 다만gettype()은 표준 타입 이름을 쓰지 않아요.