PHP에서 함수의 매개 변수 수는 동적이며 여러 가지 방식으로 다른 수의 매개 변수를 전달할 수 있습니다. 그러나 함수를 호출 할 때 전달 된 매개 변수의 수가 함수의 기대치를 충족시키지 못하면 "경계에서 벗어난 매개 변수"오류가 발생하여 프로그램의 안정성 및 작동 효율에 영향을 줄 수 있습니다. 이 문제를 피하기 위해 func_num_args () 함수를 사용하여 매개 변수 수에 대한 보안 검사를 수행 할 수 있습니다.
func_num_args ()는 현재 함수 호출에 전달되는 매개 변수 수를 얻는 내장 PHP 함수입니다. 함수 정의 중에 얼마나 많은 매개 변수가 선언 되더라도 func_num_args ()는 실제 전달 된 매개 변수 수를 반환합니다.
기능 프로토 타입 :
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">func_num_args</span></span><span>();
</span></span>
리턴 값은 현재 함수로 전달되는 실제 매개 변수의 수를 나타내는 정수입니다.
첨가의 합을 계산하는 간단한 함수가 있다고 가정하고 함수는 두 가지 매개 변수를 취할 것으로 예상합니다.
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">add</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$a</span></span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$a</span></span><span> + </span><span><span class="hljs-variable">$b</span></span><span>;
}
</span></span>
통화 중에 두 개의 매개 변수가 2 개 이상 전달되면 매개 변수 오류가 발생할 수 있습니다. 이를 피하기 위해 func_num_args ()를 사용하여 확인할 수 있습니다.
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">safe_add</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$a</span></span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>) {
</span><span><span class="hljs-comment">// 현재 함수가 전달한 매개 변수 수를 얻습니다.</span></span><span>
</span><span><span class="hljs-variable">$num_args</span></span><span> = </span><span><span class="hljs-title function_ invoke__">func_num_args</span></span><span>();
</span><span><span class="hljs-comment">// 충분한 파라미터가 전달되었는지 여부를 결정하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$num_args</span></span><span> < </span><span><span class="hljs-number">2</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"실수:적어도 두 개의 매개 변수가 필요합니다!"</span></span><span>;
</span><span><span class="hljs-keyword">return</span></span><span>;
}
</span><span><span class="hljs-comment">// 추가를 수행하십시오</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$a</span></span><span> + </span><span><span class="hljs-variable">$b</span></span><span>;
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">safe_add</span></span><span>(</span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>); </span><span><span class="hljs-comment">// 산출 8</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">safe_add</span></span><span>(</span><span><span class="hljs-number">5</span></span><span>); </span><span><span class="hljs-comment">// 산출 실수:적어도 두 개의 매개 변수가 필요합니다!</span></span><span>
</span></span>
이 예에서 Safe_add 함수는 먼저 func_num_args () 를 통해 들어오는 매개 변수 수를 확인하고 매개 변수가 두 개 미만인 경우 오류 메시지가 출력됩니다.
PHP를 사용하면 함수가 가변 수의 매개 변수를 수신 할 수 있으며 func_get_args ()를 사용하여 모든 들어오는 매개 변수를 얻을 수 있습니다. func_num_args ()를 결합하여 매개 변수가 교차되는 상황을 피하기 위해 이러한 매개 변수를보다 유연하게 처리 할 수 있습니다.
예를 들어, 여러 매개 변수를 취하고 모든 매개 변수의 합을 반환하는 추가 함수를 작성할 수 있습니다.
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">sum</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-variable">$num_args</span></span><span> = </span><span><span class="hljs-title function_ invoke__">func_num_args</span></span><span>(); </span><span><span class="hljs-comment">// 전달 된 매개 변수 수를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$args</span></span><span> = </span><span><span class="hljs-title function_ invoke__">func_get_args</span></span><span>(); </span><span><span class="hljs-comment">// 모든 매개 변수를 통과하십시오</span></span><span>
</span><span><span class="hljs-variable">$total</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-comment">// 모든 매개 변수와 합을 반복하십시오</span></span><span>
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> < </span><span><span class="hljs-variable">$num_args</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
</span><span><span class="hljs-variable">$total</span></span><span> += </span><span><span class="hljs-variable">$args</span></span><span>[</span><span><span class="hljs-variable">$i</span></span><span>];
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$total</span></span><span>;
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">sum</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>); </span><span><span class="hljs-comment">// 산출 6</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">sum</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>); </span><span><span class="hljs-comment">// 산출 15</span></span><span>
</span></span>
위 코드에서 합 함수는 여러 매개 변수를 수용 할 수 있습니다. 먼저 func_num_args ()를 사용하여 매개 변수 수를 얻은 다음 func_get_args ()를 사용하여 모든 매개 변수를 얻은 다음 마지막으로 루프를 합치십시오.
실제 개발에서 프로그래머는 종종 매개 변수 수 검사를 무시하여 함수를 실행할 때 "경계를 벗어난 매개 변수"오류가 발생합니다. 일반적인 오류 시나리오는 다음과 같습니다.
필요한 매개 변수가 누락되었습니다 : 함수가 특정 수의 매개 변수를 기대할 때, 호출시 충분한 매개 변수가 전달되지 않으면 예측할 수없는 동작 또는 런타임 오류가 발생할 수 있습니다.
중복 매개 변수 전달 : 기능이 중복 매개 변수를 처리 할 준비가되지 않은 경우 오류 또는 성능 문제가 발생할 수 있습니다.
func_num_args ()를 사용하면 이러한 오류를 피하기 위해 기능 내부에서 보안 검사를 수행 할 수 있습니다. 예를 들어, 함수가 3 개의 매개 변수를 수신해야하지만 2 ~ 4 개로 통과한다고 가정하면 프로그램은 직접 실행하는 대신 오류를 즉시 피드백해야합니다.
func_num_args () 함수를 사용하여 PHP의 함수로 전달 된 매개 변수 수를 효과적으로 확인하여 경계가없는 매개 변수로 인한 오류를 피할 수 있습니다. 이러한 방식으로 코드의 견고성을 향상시키고 런타임에 다른 수의 매개 변수를 올바르게 처리 할 수 있는지 확인할 수 있습니다. 또한 func_get_args () 와 결합하여 변수 매개 변수를 쉽게 처리하여 프로그램에보다 유연한 확장 성을 제공 할 수 있습니다.
PHP 함수를 작성할 때 양호한 매개 변수 수량 점검 습관을 개발하는 것은 "매개 변수 간 국경 간"오류를 피하는 간단하고 효과적인 방법입니다.