PHP - 스칼라 타입 선언
안녕하세요, 도전하는 프로그래머 여러분! 오늘 우리는 PHP의 세계에 흥미로운 여정을 떠납니다. 특히 스칼라 타입 선언에 대해 집중적으로 다룰 것입니다. 이 단어들이 지금은 낯설게 들릴 수 있지만, 이 튜토리얼이 끝나면 이 용어들을 마치 오랜 개발자처럼 자유자재로 사용할 수 있을 것입니다!
스칼라 타입 선언이란?
먼저, "스칼라 타입 선언"이 정확히 무엇을 의미하는지 이해해 보겠습니다. 프로그래밍에서 "스칼라"는 단일 값, 예를 들어 숫자나 텍스트 문자열을 의미합니다. "타입 선언"은 우리가 PHP에게 함수가 받거나 반환할 데이터 타입을 알리는 방법을 의미합니다.
상상해 보세요. 당신이 레몬에드 가게를 운영하고 있다고 치면, 레몬을 달라고 할 때에 누군가가 농구공을 건네주는 일이 없기를 바랄 것입니다. 이것이 바로 타입 선언이 하는 일입니다. 코드가 올바른 타입의 데이터를 사용할 수 있도록 보장합니다.
PHP 7에서의 스칼라 타입 선언
PHP 7는 게임 체인저급 기능을 도입했습니다: 함수 매개변수와 반환 값에 스칼라 타입을 선언할 수 있는 기능입니다. 이는 오류를 빨리 찾아내고 코드를 더 신뢰성 있게 만들어주는 큰 변화였습니다.
간단한 예를 보겠습니다:
function addNumbers(int $a, int $b): int {
return $a + $b;
}
echo addNumbers(5, 10); // 출력: 15
이 코드에서:
-
int $a, int $b
:$a
와$b
모두 정수여야 한다는 뜻입니다. -
: int
: 함수가 정수를 반환할 것이라는 선언입니다.
이제 약간의 장난을 써보겠습니다:
echo addNumbers("5", "10");
surprise! 이的还是正常工作并输出15。但为什么会这样呢?欢迎来到...
강제 모드
기본적으로 PHP 7은 "강제 모드"에서 동작합니다. 이는 마치 당신의 말을 이해하려고 노력하는 매우 이해심 있는 친구처럼입니다.
강제 모드에서 PHP는 가능하다면 값을 선언된 타입으로 변환(또는 "강제")하려고 합니다. 따라서 문자열 "5"와 "10"을 전달했을 때, PHP는 "당신이 무엇을 시도하고 있는지 알겠다"고 생각하고 이를 정수로 변환합니다.
다음은 일반적인 강제 변환의 표입니다:
입력 | 선언된 타입 | 결과 |
---|---|---|
"42" | int | 42 |
"3.14" | float | 3.14 |
1 | string | "1" |
true | int | 1 |
하지만 PHP가 더 엄격해야 할 때는 어떻게 하나요? 여기에...
엄격 모드
엄격 모드는 마치 정확한 답변을 강요하는 교사처럼입니다. 엄격 모드를 활성화하려면 PHP 파일의 맨 위에 다음 줄을 추가하세요:
declare(strict_types=1);
이제 우리의 장난을 다시 시도해 보겠습니다:
declare(strict_types=1);
function addNumbers(int $a, int $b): int {
return $a + $b;
}
echo addNumbers("5", "10");
봇! 이제 이는 TypeError
를 발생시킵니다. PHP는 "정수를 요청했지만 문자열을 주셨습니다. 이에 대해 기쁘지 않습니다."
스칼라 타입 선언의 이유
- 명확한 코드: 미래의 당신(또는 다른 개발자)에게 메모를 남기는 것과 같습니다. "이 함수는 숫자를 기대합니다!"
- 초기 오류 검출: 이상한 결과 대신 문제를 직접 가리키는 오류를 받습니다.
- 더 나은 성능: PHP는 정확한 타입을 기대할 때 코드를 더 잘 최적화할 수 있습니다.
실제 세계의 예
simple calculator 앱을 만들고 있다고 가정해 봅시다. 스칼라 타입 선언을 어떻게 사용할 수 있을까요?
declare(strict_types=1);
class Calculator {
public function add(float $a, float $b): float {
return $a + $b;
}
public function subtract(float $a, float $b): float {
return $a - $b;
}
public function multiply(float $a, float $b): float {
return $a * $b;
}
public function divide(float $a, float $b): float {
if ($b == 0) {
throw new Exception("0으로 나눌 수 없습니다!");
}
return $a / $b;
}
}
$calc = new Calculator();
echo $calc->add(5.5, 4.5); // 출력: 10
echo $calc->subtract(10, 3); // 출력: 7
echo $calc->multiply(3, 4); // 출력: 12
echo $calc->divide(10, 2); // 출력: 5
// 엄격 모드에서는 오류를 발생시킵니다
// echo $calc->add("5", "10");
이 예제에서 우리는 모든 메서드에서 float 타입 선언을 사용한 Calculator
클래스를 만들었습니다. 이는 우리의 모든 계산이 숫자로 작동하도록 보장하여 부작용을 방지합니다.
결론
PHP의 스칼라 타입 선언은 산로의 안전한 가이드 라인과 같습니다. 코드가 올바른 궤도에 있도록 도와주고 문제를 쉽게 발견할 수 있도록 합니다. 처음에는 약간 귀찮게 느껴질 수 있지만, 미래의 당신은 명확성과 안전성에 대해 감사할 것입니다.
프로그래밍은 컴퓨터뿐만 아니라 다른 개발자(미래의 당신 포함)와의 명확한 소통을 하는 것입니다. 타입 선언은 더 명확하고 안전하며 효율적인 코드를 작성하는 데 도움이 되는 또 다른 도구입니다.
이제 타입 선언을 하러 가세요! 코드가 당신을 감사하며, 다른 개발자들도 그렇게 될 것입니다. 즐겁게 코딩하세요!
Credits: Image by storyset