타입 시스템의 원리와 이해
👉 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
<?php
declare(strict_types=1);
function addNumbers(int $a, int $b): int {
return $a + $b;
}
// addNumbers("1", "2"); // 타입 에러 발생!