PHP - 반환 타입 선언

안녕하세요, 야심차운 프로그래머 여러분! 오늘 우리는 PHP의 세계로 발을 들여놓고 반환 타입 선언(Return Type Declarations)이라는 흥미로운 개념을 탐구해보겠습니다. 프로그래밍 초보자라도 걱정 마세요; 저는 여러분을 단계별로 안내해드릴 테니, 연간 학생들에게 했던 것처럼. 커피 한 잔을 들고, 함께 들어보세요!

PHP - Return Type Declarations

반환 타입 선언이란?

이제 구체적인 내용으로 들어가기 전에, 반환 타입 선언이 무엇인지 이해해보겠습니다. 간단히 말하면, PHP에게 함수가 어떤 종류의 데이터를 반환할 것인지 알려주는 방법입니다. 상자에 '이 상자는 장난감이 들어 있습니다' 또는 '이 상자는 책이 들어 있습니다'라고 레이블을 붙이는 것과 같습니다. 이렇게 하면 PHP(그리고 다른 프로그래머들)가 함수를 사용할 때 기대할 수 있는 것을 알 수 있습니다.

왜 중요한가요?

  1. 명확성: 코드를 더 쉽게 이해할 수 있게 합니다.
  2. 오류 방지: 잘못된 데이터 타입을 반환하려고 할 때 PHP가 빨리 오류를 잡을 수 있습니다.
  3. 더 나은 문서화: 미래의 당신(또는 다른 개발자들)에게 메모를 남기는 것과 같습니다.

이제 몇 가지 예제를 보아서 실제 어떻게 작동하는지 살펴보겠습니다.

기본 예제: 정수 반환

두 숫자를 더하는 간단한 함수로 시작해보겠습니다:

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

$result = addNumbers(5, 3);
echo $result; // 출력: 8

이 예제에서 : int은 함수의 괄호 뒤에 있는 반환 타입 선언입니다. 이는 이 함수가 항상 정수를 반환할 것이라고 PHP에게 알립니다.

구체적으로 설명하자면:

  1. function addNumbers(int $a, int $b): 두 정수 매개변수를 받는 함수를 정의합니다.
  2. : int: 이 함수가 정수를 반환할 것을 약속하는 반환 타입 선언입니다.
  3. return $a + $b: 두 숫자를 더한 결과를 반환합니다.

정수가 아닌 다른 것을 반환하려고 하면 PHP가 오류를 발생시킵니다. 이는 빨리 버그를 찾는 데 도움이 됩니다!

예제: 문자열 반환

이번에는 문자열을 반환하는 예제를 시도해보겠습니다:

function greet(string $name): string
{
return "Hello, $name!";
}

$greeting = greet("Alice");
echo $greeting; // 출력: Hello, Alice!

여기서 : string은 우리의 함수가 항상 문자열을 반환할 것이라고 PHP에게 알립니다.

예제: 배열 반환

배열은 PHP에서 매우 유용합니다. 배열과 반환 타입 선언을 사용하는 방법을 보겠습니다:

function getFavoriteColors(): array
{
return ["blue", "green", "purple"];
}

$colors = getFavoriteColors();
print_r($colors);
// 출력:
// Array
// (
//     [0] => blue
//     [1] => green
//     [2] => purple
// )

: array 선언은 이 함수가 항상 배열을 반환할 것을 보장합니다.

예제: 불리언 반환

불리언은 조건을 검사하는 함수에 매우 유용합니다. 다음은 예제입니다:

function isEven(int $number): bool
{
return $number % 2 === 0;
}

$checkEven = isEven(4);
var_dump($checkEven); // 출력: bool(true)

$checkOdd = isEven(7);
var_dump($checkOdd); // 출력: bool(false)

: bool 선언은 이 함수가 항상 true 또는 false를 반환할 것을 알립니다.

예제: 객체 반환

객체는 약간 더 복잡하지만 매우 강력합니다. 간단한 예제를 보겠습니다:

class Person {
public $name;
public $age;

public function __construct(string $name, int $age) {
$this->name = $name;
$this->age = $age;
}
}

function createPerson(string $name, int $age): Person
{
return new Person($name, $age);
}

$alice = createPerson("Alice", 30);
echo $alice->name; // 출력: Alice
echo $alice->age;  // 출력: 30

여기서 : Person은 이 함수가 항상 Person 클래스의 객체를 반환할 것이라고 PHP에게 알립니다.

NULL 반환 타입

occasionally, a function might not be able to return a value. In such cases, we can use nullable return types:

function findUser(int $id): ?string
{
$users = ["1" => "Alice", "2" => "Bob", "3" => "Charlie"];
return $users[$id] ?? null;
}

$user = findUser(2);
echo $user; // Output: Bob

$nonExistentUser = findUser(4);
var_dump($nonExistentUser); // Output: NULL

?string 반환 타입은 이 함수가 문자열 또는 null을 반환할 수 있음을 의미합니다.

연합 타입(Union Types) (PHP 8.0+)

PHP 8.0 이상에서는 여러 가능한 반환 타입을 지정할 수 있습니다:

function processInput(string $input): int|float
{
if (strpos($input, '.') !== false) {
return floatval($input);
}
return intval($input);
}

$intResult = processInput("42");
var_dump($intResult); // Output: int(42)

$floatResult = processInput("3.14");
var_dump($floatResult); // Output: float(3.14)

int|float 반환 타입은 이 함수가 정수 또는浮動小数를 반환할 수 있음을 의미합니다.

결론

반환 타입 선언은 코드에 이정표를 달아주는 것과 같습니다. 당신과 다른 사람들에게 코드의 의도를 명확히 하고, 실수를 방지하는 데 도움을 줍니다. PHP 여정을 계속하면서, 당신은 이를 통해 더 깨끗하고 신뢰할 수 있는 코드를 작성하는 데 매우 유용하게 사용할 것입니다.

기억하시길, 프로그래밍은 연습으로 성장하는 기술입니다. 금방 이해되지 않는다면 낙담하지 마세요. 계속 코딩하고, 실험하고, 가장 중요한 것은 즐거움을 느끼세요!

이제 우리가 다룬 반환 타입들의 빠른 참조 표입니다:

반환 타입 설명 예제
int 정수 : int
float 부동소수점 수 : float
string 문자열 : string
bool 불리언 : bool
array 배열 : array
object 객체 (예: : Person) : ClassName
?type NULL 가능한 타입 : ?string
type1|type2 연합 타입 (PHP 8.0+) : int\|float

미래의 PHP 마스터 여러분, 즐겁게 코딩하세요!

Credits: Image by storyset