Skip to content

PHP

return types

Author
siwon
Date
2023-08-17 14:55
Views
1226

PHP 8에서는 반환 타입이 더 유연하고 정밀하게 개선되었습니다. 함수의 반환 타입을 지정하려면 콜론(`:`) 다음에 원하는 타입을 사용하면 됩니다. PHP 8에서 반환 타입을 사용하는 방법은 다음과 같습니다:


1. **기본 반환 타입:**

   원시 데이터 타입(예: int, float, string, bool)을 반환 타입으로 지정할 수 있습니다.


   예시:

   ```php

   function add(int $a, int $b): int {

       return $a + $b;

   }

   ```


2. **Nullable(널 허용) 반환 타입:**

   반환 값이 null일 수 있다면 반환 타입 앞에 `?`를 사용하여 지정할 수 있습니다.


   예시:

   ```php

   function findUser(int $userId): ?array {

       // 유저 데이터 배열을 반환하거나 찾지 못할 경우 null 반환

   }

   ```


3. **Union(유니언) 반환 타입:**

   PHP 8에서는 함수가 여러 개의 타입 중 하나를 반환할 수 있도록 유니언 타입을 사용할 수 있습니다.


   예시:

   ```php

   function fetchData(int $id): int|string {

       // 정수나 문자열 중 하나를 반환

   }

   ```


4. **객체용 반환 타입 선언:**

   클래스 이름이나 인터페이스를 반환 타입으로 지정할 수 있습니다.


   예시:

   ```php

   class UserManager {

       public function getUser(int $userId): User {

           // User 클래스의 인스턴스를 반환

       }

   }

   ```


5. **제네릭용 반환 타입 선언:**

   PHP 8.1에서는 제네릭을 지원하며, 함수나 메서드에서 매개변수화된 타입을 지정할 수 있습니다.


   예시:

   ```php

   function processArray(array $data): array<int> {

       // 정수만 포함하는 배열을 반환

   }

   ```


6. **Void(공허) 반환 타입:**

   반환 값이 없는 경우, 반환 타입으로 `void`를 지정할 수 있습니다.


   예시:

   ```php

   function logMessage(string $message): void {

       // 메시지를 로그에 기록하고 반환 값 없음

   }

   ```

반환 타입을 지정하면 코드 가독성이 개선되며 잠재적인 버그를 포착하는 데 도움이 되며 함수 사용법에 대한 더 나은 문서를 제공합니다. 또한, PHP 8은 `declare(strict_types=1)` 지시문을 통해 강력한 타입 체크를 강제화하는 더 엄격한 타입 검사를 도입했습니다.

Total 0

Total 45
Number Title Author Date Votes Views
15
http request form method GET POST
siwon | 2023.08.17 | Votes 0 | Views 1414
siwon 2023.08.17 0 1414
14
printf()
siwon | 2023.08.17 | Votes 0 | Views 1071
siwon 2023.08.17 0 1071
13
heredoc 또는 nowdoc 구문
siwon | 2023.08.17 | Votes 0 | Views 1069
siwon 2023.08.17 0 1069
12
single vs double quotes
siwon | 2023.08.17 | Votes 0 | Views 904
siwon 2023.08.17 0 904
11
string functions
siwon | 2023.08.17 | Votes 0 | Views 1050
siwon 2023.08.17 0 1050
10
return types
siwon | 2023.08.17 | Votes 0 | Views 1226
siwon 2023.08.17 0 1226
9
date(), time() funtions
siwon | 2023.08.17 | Votes 0 | Views 1187
siwon 2023.08.17 0 1187
8
Superglobals
siwon | 2023.08.17 | Votes 0 | Views 813
siwon 2023.08.17 0 813
7
scalar types
siwon | 2023.08.17 | Votes 0 | Views 916
siwon 2023.08.17 0 916
6
constructor
siwon | 2023.08.16 | Votes 0 | Views 990
siwon 2023.08.16 0 990
5
composition vs inheritance
siwon | 2023.08.16 | Votes -1 | Views 1193
siwon 2023.08.16 -1 1193
4
polymorphism = method overriding => abstract(추상화)와 관련있음
siwon | 2023.08.16 | Votes 0 | Views 1155
siwon 2023.08.16 0 1155
자식 class가 부모와 같은 method를 가질경우 자식 class의 메소드가 우선한다는 원칙
siwon | 2023.08.29 | Votes 0 | Views 1209
siwon 2023.08.29 0 1209
3
encapsulation
siwon | 2023.08.16 | Votes -1 | Views 919
siwon 2023.08.16 -1 919
private, protected등 access modifier를 사용하여 property나 method의 접근을 제한 하는 oop 원칙
siwon | 2023.08.30 | Votes 0 | Views 1072
siwon 2023.08.30 0 1072
2
inheritance
siwon | 2023.08.16 | Votes 0 | Views 854
siwon 2023.08.16 0 854
1
object와 class의 차이점
siwon | 2023.08.16 | Votes 0 | Views 1145
siwon 2023.08.16 0 1145