티스토리 뷰
PHP 엔진에 특별한 지시가 없는한
인수와 반환값에는
어떤 자료형이나 값이 오더라도
제한이 없다.
하지만 의도적으로 제한을 할 수 있다.
선언형 | 인수 제한 | 최소 PHP 버전 |
array | 배열 | 5.1.0 |
bool | 불리언: true 또는 false | 7.0.0 |
callable | 함수 또는 호출 가능한 메서드 | 5.4.0 |
float | 부동소수점 수 | 7.0.0 |
int | 정수 | 7.0.0 |
string | 문자열 | 7.0.0 |
클래스명 | 해당 클래스의 인스턴스(클래스와 인스턴스에 대해서는 6장 참고) | 5.0.0 |
함수의 인수 제한
함수를 정의할 때는 인수명 앞에 형 선언을 붙인다.
function countdown(int $top) {
while ($top > 0) {
print "$top..";
$top--;
}
print "펑!\n";
}
$counter = 5;
countdown($counter);
print "counter의 값: $counter";
위의 코드에서 top이란 변수에
5가 아니라 "Gana" 처럼
int 형이 아닌 값을 전달하면
PHP 엔진이 아래와 같은 문제를 보고한다.
PHP Fatal error: Uncaught TypeError: Argument 1 passed to countdown()
must be of the type integer, string given, called in decl-error.php
on line 2 and defined in countdown.php:2
Stack trace:
#0 decl-error.php(2): countdown('grunt')
#1 {main}
thrown in countdown.php on line 2
PHP 엔진은 오류 메시지에서 TypeError에 대해 알려준다.
문제가 발생한 함수(countdown())와 인수(1)를 확인하고,
원래 전달되어야 할 형(integer)과
실제로 전달된 형(string)이 무엇인지도 알 수 있다.
또한 문제가 된 함수 호출 위치는 어디인지,
그 함수가 어디에 정의됐는지도 알려준다.
함수의 반환값 제한
함수의 반환값의 형을 제한하려면
인수 목록이 들어있는 괄호를 닫은 뒤
: 를 붙이고 형 선언을 넣는다.
function restaurant_check($meal, $tax, $tip): float {
$tax_amount = $meal * ($tax / 100);
$tip_amount = $meal * ($tip / 100);
$total_amount = $meal + $tax_amount + $tip_amount;
return $total_amount; //함수가 float이 아닌 값을 반환하면 PHP엔진이 TypeError를 보고한다.
}
※주의할점
PHP 7의 기본 설정은 스칼라 형의 선언을
완전하게 강제하지 않는다.
선언된 형과 인수나 반환값의 형이 일치하지 않더라도
PHP 7은 형 변환을 시도해 일치시키려 한다.
숫자형 값은 문자형으로 ,숫자를 포함한 문자열은
적절한 숫자형으로 묵시적 변환이 이루어진다.
파일 맨 위에 declare(strict_types = 1); 구문을 넣으면
이런 느슨한 기본 설정을 엄격한 설정으로 바꿀 수 있다.
이렇게 하면 해당 파일의 모든 함수의 인수와 반환값은
형 선언과 일치해야만 한다.
그러나 float으로 선언된 인수에 정수를 넣는 것은 여전히 허용된다.
엄격한 형식을 전역적으로 적용할 수는 없다.
적용하려는 파일마다 선언해야 한다.
'PHP' 카테고리의 다른 글
PHP 클래스 (0) | 2021.04.08 |
---|---|
PHP 다른 파일의 코드 실행하기 (0) | 2021.04.06 |
PHP 함수 내부에서 전역변수에 접근 (0) | 2021.04.06 |
PHP 여러값을 반환하는 함수 (0) | 2021.04.06 |
PHP 인수가 있는 함수 (0) | 2021.04.05 |
- Total
- Today
- Yesterday
- 무효트래픽이의신청
- PHP'"
- C언어다차원포인터
- C언어프로세스
- PHPescaping
- C언어정적메모리할당
- html이미지
- HTML태그사용법
- PHP이스케이프
- 이미지무료다운로드사이트
- PHPhere문서
- C언어malloc함수
- PHP작은따옴표역할
- PHP마침표
- C언어동적메모리할당
- PHP'
- PHP작은따옴표
- PHP문자열연결연산자
- html이미지넣기
- C언어malloc
- PHPescapecharacter
- PHP큰따옴표작은따옴표차이점
- HTMLbestTag
- 무효클릭신고양식
- HTMLtag사용법
- htmlTag
- PHP이스케이핑
- C언어2차원포인터
- PHP큰따옴표
- PHP"'
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |