return types
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)` 지시문을 통해 강력한 타입 체크를 강제화하는 더 엄격한 타입 검사를 도입했습니다.
| 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 |
|
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 |
|
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 |