PHP 타입 (Types)

PHP 타입 (Types)

PHP는 동적 타입 언어라서 변수 타입을 선언하지 않아도 되는데, 내부는 좀 더 정교하게 나뉘어 있어요. 값을 어떤 '종류'로 다룰지는 그 값 자체가 정하고, 상황에 따라 한 타입을 다른 타입으로 자동 변환하기도 해요. 매뉴얼은 타입을 크게 스칼라 타입, 복합 타입, 특별 타입 세 갈래로 정리해요. 이 분류를 먼저 잡아두면 함수 시그니처와 타입 선언을 읽을 때 훨씬 편해져요.

출처: PHP 매뉴얼 - Types

본문

스칼라 타입

단일 값 하나를 담는 소위 '기본 타입'이에요. 이 네 가지가 가장 흔하게 쓰여요.

  • bool(불리언): truefalse 두 값만 가져요. 조건문의 참/거짓을 표현하죠.
  • int(정수): 소수점이 없는 정수예요. 10진수·16진수·8진수·2진수 표기가 모두 허용돼요.
  • float(부동소수점): 소수점이 있는 실수예요. 1.23, 7e10처럼 지수 표기도 써요.
  • string(문자열): 문자들의 모임이에요. 단일 인용부호·이중 인용부호·heredoc·nowdoc 네 가지 방식으로 만들 수 있어요.

복합 타입

여러 값이나 특별한 구조를 담는 타입이에요.

  • array(배열): 키와 값의 순서 있는 사상(map)이에요. PHP에서 가장 유연하고 자주 쓰여요.
  • object(객체): 클래스의 인스턴스예요. 프로퍼티와 메서드를 가져요.
  • callable(콜러블): 호출 가능한 것, 예를 들어 함수 이름이나 클래스 메서드를 가리켜요.
  • iterable(이터러블): foreach로 순회 가능한 값들의 집합이에요. 배열과 Traversable 객체를 포함해요.

특별 타입

  • resource(리소스): 파일 핸들이나 DB 연결처럼 외부 자원을 가리키는 특별한 값이에요.
  • null: 값이 '없음'을 뜻하는 타입이에요. 아직 값이 할당되지 않은 변수의 기본 상태예요.

PHP 8의 표준 타입

PHP 8부터는 특정 함수의 반환 타입이나 매개변수에 쓰이는 '표준 타입' 세 가지가 더 있어요.

  • void: 반환값이 없음을 명시해요.
  • never: 항상 예외를 던지거나 함수를 종료해서 결코 정상 반환하지 않음을 뜻해요.
  • mixed: 어떤 타입이든 허용한다는 뜻이에요.

이 값들은 declare(strict_types=1);와 함께 쓰면 타입 검사가 더 엄격하게 동작해서, 버그를 조기에 잡는 데 도움이 돼요.