minstudio

타입 시스템의 원리와 이해

👉 4. Strict Typing (엄격한 타입)

런타임 안정성의 핵심

PHP는 기본적으로 느슨한 타입 언어(동적 타입)이지만, declare(strict_types=1);를 선언하면 엄격한 타입 체크를 강제할 수 있습니다.

이는 의도치 않은 타입 변환(예: 문자열 "1"이 정수 1로 변환되는 현상)을 막아주며, 예상치 못한 버그를 예방하고 코드의 예측 가능성을 크게 높여줍니다.


👉 5. Scalar & Complex Types

고도화된 타입 시스템

현대 PHP는 매우 강력한 타입 시스템을 갖추고 있습니다. Union Types(여러 타입 중 하나), Intersection Types(여러 인터페이스를 모두 만족) 등을 지원합니다.

여기에 어떤 값이든 될 수 있는 mixed나, 절대 반환하지 않는(예: 에러를 던지거나 종료) 함수를 위한 never 타입까지 추가되어, 더욱 견고한 코드를 작성할 수 있습니다.

Weak Typing vs Strict Typing

기본 모드 (Weak Typing) 암묵적 형변환 발생 (버그 원인) function add(int $a, int $b) add(1, "2") 결과: 3 "2"가 자동으로 int(2)로 변환됨 엄격한 모드 (Strict Typing) declare(strict_types=1); function add(int $a, int $b) add(1, "2") Fatal Error 타입이 정확히 일치하지 않으면 에러 발생
<?php
declare(strict_types=1);

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

// addNumbers("1", "2"); // 타입 에러 발생!
타입 시스템의 원리와 이해 | Minstudio