일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tryhackme
- sql injection
- THM
- access control
- War Game
- file upload
- php file upload
- SQLi
- 파일 업로드 취약점
- ssrf
- BANDiT
- php login page
- overthewire
- Authentication
- php
- OS Command Injection
- php To Do List
- Reconnaissance
- privilege escalation
- php 로그인 페이지 만들기
- Cookie
- over the wire
- Server Side Request Forgery
- active reconnaissance
- Cryptography
- active recon
- Leviathan
- FTZ
- php 파일 업로드하기
- Recon
- Today
- Total
R's Hacking Daily Log
php 함수 (2) 본문
Step 1 :: 매개변수 활용
매개변수란 함수를 호출할 때 전달한 값을 받아주는 변수로
함수 내에서 사용 가능한 변수라 이전 글에서도 언급했다.
이번에는 그 매개변수를 어떤 식으로 활용할 수 있는지 알아보고자 한다.
1) 매개 변수 기본값 설정하기
매개 변수를 사용하는 경우 기본값을 설정할 수 있다.
기본값이 설정된 매개 변수는 인수가 전달되지 않을 경우에 적용되는 값으로 이해하면 된다.
$str 매개 변수가 존재하는 함수를 호출할 때 인수를 전달하지 않고 say()로 함수를 호출한 경우에는
$str의 기본값으로 설정된 "hello world"가 출력되었고
인수를 작성한 경우에는 매개 변수가 전달받은 값이 존재하는 것이기 때문에 인수 값을 출력하고 있다.
매개변수에 기본값을 설정하고 싶다면 아래와 같이
<?php
function NAME(매개변수 = 값) {
...
}
변수에 값을 할당할 때와 동일한 형태로 작성해주면 된다.
2) 스플랫(...) 연산자 사용하기
문자 연결 연산자로 사용되는 온점 하나 " . "
이게 3개로 분신술을 하면 스플랫 연산자가 된다. " ... "
의미는 $numbers 매개 변수의 길이가 가변적이라는 뜻이다.
"인수로 전달되는 값을 배열에 저장할 건데 그 길이가 어찌 될 진 나도 몰라"라는 거다.
그렇다보니 함수를 사용할 때마다 서로 다른 개수의 인수가 전달돼도 아무런 문제가 없다.
즉 고정된 길이에 맞춰 인수를 전달할 필요가 없다는 것이다.
결과적으로 위의 코드는
"몇 갠지 모르는 데 $numbers 매개변수로 인수 받아서 $numbers 안에 값 하나씩 출력해 줘"라는 의미이다.
배열 요소를 출력하는 print_r()로 $numbers를 출력해 보면 정상적으로 결과가 나오는 걸 알 수 있다.
3) 반환 데이터 유형 지정하기
이번에 살펴볼 내용은 return과 관련되어 있다.
함수에서 매개 변수의 타입을 지정할 수 있는 데 이는 전달받는 값의 타입을 딱 지정해두기 위함이다.
function myfunc(int i, float f) {
...
}
이 코드처럼 매개변수 i는 정수형이어야하고 매개변수 f는 실수형이어야 하는 걸 지정할 수 있다.
반대로 return 값의 타입도 지정할 수 있는 데 이는
function myfunc(mixed $s) : int|string {
...
}
괄호와 중괄호 사이에 콜론으로 시작하여 지정하고자 하는 타입을 " | " 기호로 구분해 작성하면 된다.
반환값을 정수 또는 문자열 타입으로 지정한 경우
인수로 실수값 1.2를 전달하게 되면 정수형으로 형 변환이 자동으로 되면서 결과는 1이 된다.
문자열 형태로 1.2를 전달하면 string 값으로 return이 가능하기 때문에 입력한 값 그대로 1.2가 출력된 걸 볼 수 있다.
return 값의 데이터 타입을 지정할 경우 주의할 점은
데이터 타입을 지정해놓고 return을 사용하지 않으면 에러가 난다는 것이다.
4) 명명된 매개 변수
흔히 함수를 사용할 땐 매개 변수의 순서와 인수의 순서를 일치시켜줘야 한다.
하지만 명명된 매개 변수 형태로 인수를 전달한다면 얘기가 달라진다.
여기서 말하는 "명명"이라는 건 인수를 전달할 때
"이 값은 저 매개 변수로 주는 값이다"를 딱 명시해 주는 느낌이라고 할 수 있다.
위의 코드를 보면 일반적인 방식으로 myName()에 인수를 전달하고
함수에 정의된 매개 변수의 숫서 상관없이 명명된 매개 변수 형태로 인수를 전달하고 있다.
당연히도 결과는 동일한 형태로 나왔다.
이렇게 매개변수의 순서를 고려하지 않고 인수를 전달하기 위해 사용할 수 있는 방법이 존재하며
이를 명명된 매개 변수라고 한다!
'PHP' 카테고리의 다른 글
php 객체 지향 프로그램 (1) (0) | 2023.07.10 |
---|---|
php 함수 (3) (0) | 2023.07.06 |
php 함수 (1) (0) | 2023.07.05 |
php 반복문 다루기 (0) | 2023.07.04 |
php 조건문 다루기 (0) | 2023.07.03 |