배움/PHP

PHP strict_types 기능

spaces25 2025. 4. 29. 13:48
반응형

PHP의 strict_types 기능은 함수나 메서드의 인자 및 반환값의 타입 강제 여부를 제어하는 기능입니다. 이 기능은 파일 단위로 적용되며, declare(strict_types=1); 구문을 통해 활성화할 수 있습니다.


🔧 기본 문법

<?php
declare(strict_types=1);

function add(int $a, int $b): int {
    return $a + $b;
}

echo add(5, 3);    // 정상 작동
echo add(5, "3");  // TypeError 발생 (strict_types가 활성화되어 있기 때문)

🚨 주요 특징

  • strict_types=1을 선언하면, 스칼라 타입 힌트(int, float, string, bool)에 대해 암시적 타입 변환이 허용되지 않습니다.
  • 선언하지 않거나 strict_types=0이면, PHP는 암시적으로 타입을 변환하려고 시도합니다 (약한 타입 검사).
  • 선언 위치는 반드시 PHP 파일 최상단, namespace 이전이어야 합니다.

💡 사용 예시 비교

1. 약한 타입 (기본값)

<?php
function add(int $a, int $b): int {
    return $a + $b;
}

echo add(5, "3"); // 정상 작동: "3"은 자동으로 int로 변환됨

 

2. 엄격한 타입 (strict_types=1)

<?php
declare(strict_types=1);

function add(int $a, int $b): int {
    return $a + $b;
}

echo add(5, "3"); // TypeError 발생

✅ 요약

  • strict_types는 정적 타입 언어처럼 PHP를 더 엄격하게 만들고 싶을 때 유용합니다.
  • 디버깅, 유지보수, 코드 안정성을 높이는 데 도움을 줍니다.
  • 단점은 기존 PHP 코드와의 호환성 문제 가능성입니다.
반응형