생활코딩 php 수업 영상을 보면서 내용을 정리하는 포스팅, 이번에는 사용자 정의 함수에 대해서 알아보겠다.
이전 포스트
php의 반복문, do-while문과 foreach문
함수(function)란?
함수Function란 특정 작업을 수행하도록 미리 정의된 코드 블록을 말한다.
어떤 데이터(입력값/인수)가 함수에 전달되면, 함수 내부의 알고리즘을 거쳐 정해진 결과값(반환값)을 돌려주는(출력하는) 기능을 수행한다.
이는 코드의 재사용성을 높이고 복잡한 작업을 모듈화 하는 데 사용된다.
함수의 종류는 아래의 두 가지뿐이다.
- 내장 함수Built-in Functions: php에 기본으로 내장되어 있는 함수
- 사용자 정의 함수User-defined Functions: 사용자(우리)가 스스로 작성한 함수
php의 내장 함수 (strlen, nl2br, file_get_contents)
php 디버깅 용도의 내장 함수 var_dump와 데이터 타입 Boolean
php 내장 함수 isset과 empty의 차이 (변수 상태 및 유효성을 확인하는 함수)
php의 배열 관련 내장 함수들
php의 조건문과 반복문의 활용 (feat. scandir과 count 함수)
내장 함수란 무엇인지, 그리고 그 종류들을 이전 포스트에서 여러 번 다뤘었다.
이번에는 사용자 정의 함수를 만들고, 사용하는 법을 알아보겠다.
함수 만들기 예고
이 영상처럼 자주 반복해서 사용하는 코드를 함수로 만들어둬서 사용하면 코드의 중복도 줄일 수 있고, 눈으로 보기에도 더 깔끔한 코드를 만들 수 있다.
함수의 형식
<?php
function basic(){
echo 'Lorem ipsum dolor1<br>';
echo 'Lorem ipsum dolor2<br>';
}
basic();
?>
위의 코드와 같이 사용자 정의 함수를 만들고 호출할 수 있다.
<?php
basic();
function basic(){
echo 'Lorem ipsum dolor1<br>';
echo 'Lorem ipsum dolor2<br>';
}
?>
참고로 이렇게 함수를 실행하는 basic()이 상단에 있고, 그 아래에 함수를 정의하는 코드가 온다고 하더라도 출력되는 결과는 같다.
함수를 배우기 이전에는 항상 코드는 위에서 아래로 차례대로 한 줄씩 실행이 된다고 배웠었는데, 여기서는 예외다.
<?php
function sum($num1, $num2){
echo $num1 + $num2;
echo '<br>';
}
sum(2,4);
sum(4,6);
?>
이렇게 함수에 값을 입력해서 입력한 값에 따라 다른 결과를 출력하는 함수를 만들 수도 있다.
이때 함수를 정의할 때 괄호( ) 안에 넣었던 변수 $num1과 $num2를 매개변수Parameter라고 하고,
함수를 실행할 때 괄호( ) 안에 넣었던 2와 4, 4와 6 같이 함수로 전달되는 데이터를 인수Argument라고 한다.
<?php
function sum($num1, $num2){
return $num1+$num2;
}
echo sum(2,4);
file_put_contents('result.txt', sum(2,4));
?>
또, 함수는 return 키워드를 사용하여 처리된 결과값(반환값)을 함수를 호출한 곳으로 돌려줄 수 있다.
이 반환된 값은 변수에 저장하여 다른 함수에 전달하거나, 계산에 사용하고, 파일이나 데이터베이스에 저장하는 등 다양한 목적으로 활용된다.
함수의 활용
위의 생활코딩 수업 영상과는 또 다른 내용의 함수 예제 코드를 아래에서 한번 살펴보고 가겠다.
<?php
// $str에 16바이트가 넘는 문자열을 넣어보았다.
$str = 'abcd1234efgh5678i';
// $byte에 최대 허용 가능한 바이트 수를 입력
$byte = 16;
// checkByte() 함수에 $str과 $byte의 값을 인자로 넣고 그 결과로 반환된 값을 $flag에 넣는다.
$flag = checkByte($str, $byte);
if($flag){
// $flag가 true일 경우 이것을 출력
echo '패스워드가 설정되었습니다.';
}else{
// $flag가 false일 경우 이것을 출력
echo $byte.nl2br('Byte를 초과하였습니다.
패스워드를 다시 설정해주세요.');
}
// checkByte() 함수의 정의 시작
function checkByte($str, $byte){
// strlen() 함수를 이용해서 $str의 바이트 수를 $strlen에 할당한다.
$strlen = strlen($str);
// $strlen과 $byte의 값을 비교한다.
if($strlen <= $byte){
// $strlen이 $byte의 값보다 작으면 true를 반환
return true;
}
// $strlen이 $byte의 값보다 크면 false를 반환
return false;
}
?>
checkByte라는 사용자 정의 함수를 만들어서 사용하는 예제 코드다.
인수로 넘겨받은 $str에 할당된 문자열은 php 내장 함수인 strlen()에서 바이트 수를 검사하고, 결과를 $strlen에 할당한다.
if문에서는 $strlen과 $byte를 비교하여 지정된 바이트 이하일 경우에는 return으로 true를 돌려준다.
반대로 지정 바이트를 초과할 경우에는 false를 돌려준다.
위의 예제 코드에서 사용된 php 내장 함수인 strlen()과 nl2br()은 포스트 상단에 연속으로 링크한 이전 포스트에서 나온 적이 있었다.
다음 포스트
php, CRUD 글 생성 (feat. file_put_contents와 header 함수)
응원이나 피드백이 담긴 댓글은 제가 계속 블로그를 해나갈 수 있는 원동력이 됩니다. 😊
지인에게 보여주고 싶은 글이었다면 URL을 복사해서 메신저나 소셜 미디어에 공유해 주세요.
0 Comments
댓글 쓰기
🔸 댓글은 블로그 운영자의 승인 후에 블로그에 표시됩니다.
🔸 비로그인 방문자 분께서는 '익명'보다 이름/URL로 댓글을 남겨주시면 감사하겠습니다. (URL은 생략 가능합니다.)
🔸 구글 로그인 방문자는 '알림 사용'에 체크를 하시면, 남겨주신 댓글에 대한 답글 알림을 메일로 받아볼 수 있습니다. 📩