function 인자에 대한 개념이 잘 안잡히네요...ㅠ_ㅠ > 자유게시판

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

자유게시판

function 인자에 대한 개념이 잘 안잡히네요...ㅠ_ㅠ 정보

function 인자에 대한 개념이 잘 안잡히네요...ㅠ_ㅠ

본문

function latest($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")

여기서... $skin_dir=""의 의미는 인자가 없더라도 오류가 발생하지 않게 하겠다.. 이런뜻인거 맞죠?

그래서 lastest( '', 'test',3,3)으로 사용해도 오류가 발생하지 않구요..

궁금한건..

$rows=10 의 의미인데요.. 이것도 기본값적인 개념으로 알고 있었는데 막상 해보니..
lastest('','test',,,)이렇게 콤마처리만 한다거나 홀따음표 두개를 붙여도 오류가 발생하네요..
오류가 발생한다는건 기본값 인식이 안된다는건데.. 그럼 결국 사용자가 값을 넣어야 하잖아요..
근데 왜 $row 로만 적지 않고 $rows=10 이라고 적어놨을까요? ㅠ_ㅠ
기능이 있다는 의미같은데.. 어떠한 기능을 하는거죠??

포인트가 모잘라서 자꾸 자유게시판을 이용하게 되네요 양해부탁드립니다..
추천
0

댓글 5개

펑션 이름 안에 있는 값은 기본값입니다.
불러올 때, $rows 부분에 해당하는 곳에 아무것도 적지않으면 기본값인 10으로 보이게되죠.
인자의 기본값은 오류방지도 있겠지만 함수사용의 편리성도 있죠.
예를 들어 1부터 10까지의 수를 배열로 만들때 range(1, 10) 함수를 씁니다.
래퍼런스를 보면 range(mixed $low , mixed $high, number $step)으로 나오죠.
보통 하나씩 증가할때 많이 사용해서 $step의 기본값은 1입니다.
코딩할때마다 range(1, 10, 1), range(100, 200, 1)... 을 쓰면 귀찮죠?
글로벌한 값을 디폴트로 정의해두고, 예외인 경우에만 정의하면 더 편하죠...

참고로 아무것도 적지 않은 것과 빈 공란은 다릅니다.
php가 유연하다는 장점이 있지만 그것 때문에  형에 대한 이해가 없다면 원치 않는 결과가 나옵니다.
null과 '', false와 0과 '0', true와 1과 '1'... 차이를 잘 구분해야 합니다.
http://kr2.php.net/manual/kr/types.comparisons.php
lastest('','test',,,)  <--이렇게 하면 오류가 발생해서요..
lastest('','test') <-- 이렇게 하면 오류가 발생하지는 않습니다.

예를 들어.. 네번째 인자 $subject_len=40에만  값을 주고 싶어서...
lastest('',test,,30)하면 오류가 발생하거든요 ㅠ_ㅠ

즉.. 세번째 인자를 주지않고 기본값으로 처리하면서 네번째 인자를 주려면 어떻게 적어야 할까요???
기본값의 개념은 이해가 가는데... 처리방법이 잘 이해가 가지를 않네요 ㅠ_ㅠ
lastest('', 'test', 10, 30)으로 쓰시면 됩니다.
인자가 없더라도 오류가 발생하지 않게 하겠다는 것이 아니라 정의한 값을 디폴트로 쓰겠다입니다.

인자를 생략할 수 있는 경우는 n번째 이후에 일괄적으로 생략할 때 입니다.
만약 n번째 이후에 어떤 인자를 지정해야 한다면 그 앞에 값은 모두 적어야 합니다.
그런 의미에서 lastest 함수는 잘못된 방식이라고 볼 수 있죠.
두번째 인자가 필수값인데 첫번째 인자에 디폴트값을 주지는 않거든요.
(어차피 두번째 인자를 반드시 적어야 하기 때문에 첫번째 인자는 생략할 수는 없으니까요)
이해하려면 lastest('','test')는 되지만 lastest(,'test')는 문법오류가 발생하는 걸 확인해보시면 됩니다.

근데 왜 저렇게 썼냐? 기능이 확장되면서 함수의 인자를 늘어나게 되었습니다.
생략시키도록 만들려면 인자의 순서를 바꿔야 하는데, 고칠 파일이 1000페이지라면 엄두가 안나죠.
그래서 그냥 함수 마지막에 인자만 추가하는 방식으로 바꾸고 그런게 계속 쌓이면 다 뜯어고칩니다.
괜히 XP서비스팩2, 3, 4 나오다가 비스타로 넘어가는게 아닙니다.
전체 195,786 |RSS
자유게시판 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT