함수 function
함수는 하나의 특별한 목적의 작업을 수행하도록 설계된 독립적인 블록을 의미한다.
함수를 사용하는 가장 큰 이유는 반복적인 코드 작성을 줄일 수 있기 때문이다.
프로그램에서 하나의 특정 작업을 여러 번 박복해야 할 때는 해당 작업을 수행하는 함수를 작성하면 된다.
그리고서 프로그램이 필요할 때마다 해당 함수를 호출하여 작업을 반복하면 된다.
프로그램을 여러 개의 함수로 나누어 작성하면 모듈화로 인해 전체적인 코드의 가독성이 좋아진다.
또한, 프로그램에 문제가 발생하거나 기능 변경이 필요할 때에도 유지보수가 용이하다.
함수의 구조
PHP에서 함수는 function 키워드로 선언되며, 다음과 같은 구성 요소를 가진다.
1. 함수 이름
2. 괄호 안에 쉼표(,)로 구분되는 함수의 매개변수(parameter)
3. 중괄호({})로 둘러싸인 PHP 수행 코드
PHP 함수의 구조
1
2
3
4
5
|
function 함수이름(매개변수1, 매개변수2,...)
{
함수가 호출 되었을 때 실행될 코드;
}
|
cs |
함수의 이름은 함수를 구분하는 식별자가 된다.
함수의 매개변수(parameter)는 함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있도록 해주는 변수이다.
함수의 인수(argument)는 함수가 호출된 때 함수로 값을 전달해주는 변수이다.
함수가 호출되면 중괄호 안에 코드가 실행된다.
PHP에서 함수의 이름을 작성할 때는 다음과 같은 규칙이 있다.
1. 함수의 이름은 문자와 숫자, 언더스코어(_)만 사용할 수 있다.
2. 함수의 이름은 숫자로 시작할 수 없다.
3. 여러 함수가 같은 이름을 사용할 수는 없다.
PHP는 함수 오버 로딩을 지원하지 않으므로, 이미 선언된 함수를 다시 선언할 수 없다.
또한, 함수의 이름은 대소문자를 구분하지 않기 때문에 sum()과 SUM()은 같은 함수로 취급된다.
PHP에서 함수 이름은 대소문자를 구별하지 않지만, 선언한 그대로 호출하는 것이 좋다.
매개변수는 인수로 전달받은 값을 함수에서 사용하기 위해 사용한다.
함수는 여러 개의 매개변수를 가질 수 있으며, 쉼표(,)를 사용하여 구분한다.
사용자 정의 함수
PHP에는 미리 작성되어 제공되는 많은 내장 함수들이 있다.
하지만 개발자가 필요로 하는 기능을 가진 함수가 없다면, 직접 함수를 만들 수도 있다.
이런 함수를 사용자 정의 함수라고 하며, 반복해서 수행해야 하는 작업이 있다면 함수로 만들어서 사용하는 것이 좋다.
함수의 호출
PHP가 미리 정의하여 제공하는 함수는 모든 PHP 파일에서 사용할 수 있다.
하지만 사용자가 직접 정의한 함수는 해당 함수가 정의된 PHP 파일에서만 호출할 수 있다.
PHP의 모든 함수와 클래스는 전역 범위(global scope)를 가진다.
함수 호출 방법
1
2
3
4
5
6
7
8
9
|
<?php
// 함수정의
function sum($left, $right){
echo $left + $right;
}
// 함수 호출
sum(5, 7);
?>
|
cs |
위의 예제는 2개의 매개변수를 받아서, 2개의 값을 더해서 화면 출력하는 함수이다.
함수를 호출할 때는 정의한 함수명과 매개변수에 넘겨줄 값을 괄호 안에 적어준다.
매개변수가 1개일 때는 전달 인자도 1개, 매개변수가 2개일 때는 전달 인자도 2개를 넘겨주어야 한다.
함수의 값 반환
PHP에서 함수는 반환(return) 문을 포함할 수도 있고, 포함하지 않을 수도 있다.
PHP에서 반환 문은 retrun 키워드를 사용하여 명시할 수 있다.
이렇게 포함된 반환 문은 함수가 실행된 후 결과 내용을 반환해 준다.
반환문은 배열이나 객체를 포함한 PHP에서 사용할 수 있는 모든 데이터 타입을 반환할 수 있다.
1
2
3
4
5
6
7
8
9
|
<?php
// 함수정의
function sum($left, $right){
return $left + $right;
}
// 함수 호출
echo sum(5, 10);
?>
|
cs |
PHP7부터는 함수의 반환 값을 원하는 타입으로 반환받을 수 있도록, 반환 값의 타입을 직접 지정할 수 있다.
함수의 반환 타입을 설정하는 예제
1
2
3
4
5
6
7
8
9
|
<?php
// 함수정의
function sum($left, $right): float {
return $left + $right;
}
// 함수 호출
var_dump(sum(5, 10)); // 데이터 타입은 float으로
?>
|
cs |
위의 예제에서 2개의 int타입의 데이터를 전달 인자로 전달받는다.
하지만 반환 타입이 float타입으로 설정되어 있으므로, 결괏값이 int타입에서 float타입으로 자동 변환되어 반환된다.
그리고 declare 문을 사용하여 함수의 반환 타입을 엄격하게 하는 방법도 있다.
declare 문은 어떤 코드 블록 안에 실행되는 Directive를 설정하기 위해 사용된다.
declare 문법은 다른 제어구조와 비슷하다.
declare 문법을 사용하여 반환 타입을 엄격하게 설정하는 예제
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
declare(strict_types = 1); // strict 모드로 설정
// 함수정의
function sum($left, $right): float {
return $left + $right;
}
// 함수 호출
var_dump(sum(5, 10)); // 오류발생
var_dump(sum(5, 10.5)); // float
?>
|
cs |
declare(strict_types = 1);이라고 상단에 선언해주면 된다.
PHP 7부터 제공되는 strict 모드는 지금까지의 자동 변환으로 느슨하게 처리되던 타입 검사를 엄격하게 수행하도록 변경한다.
'PHP' 카테고리의 다른 글
26. PHP 함수의 활용 (0) | 2021.03.09 |
---|---|
25. PHP 매개변수와 인자 (0) | 2021.03.07 |
23. PHP 연관배열 (0) | 2021.03.06 |
22. PHP 다차원배열 (0) | 2021.03.06 |
21. PHP 배열 (0) | 2021.03.06 |