update : 2015.11.03
php.shukuma.com검색:
|
함수 인수함수 인수를 통해서 함수에 정보를 넘겨줄수 있다. 이런 함수 인수는 콤마(,)로 구별되는 표현 목록이다. PHP는 값에 의한 인수 전달(passing by value) (기본값), 참조에 의한 전달, 인수 기본값 기능을 지원합니다. 가변 길이 인수 목록도 지원하며, 자세한 정보는 func_num_args(), func_get_arg(), func_get_args() 함수 레퍼런스를 참고하십시오.
Example #1 함수에 배열 넘겨주기
<?php 참조에 의한 인수 전달하기기본적으로, 함수 인수는 값에 의해 전달됩니다. (그래서 함수내의 인수 변수값을 변경해도 함수 밖에서는 바뀌지 않습니다) 함수가 그 인수를 바꾸게 하려면, 참조로 넘겨줘야 합니다. 항상 함수의 인수를 참조로 넘기게 하려면, 함수 정의에서 엠퍼샌드(&)를 인수 이름 앞에 붙이면 됩니다:
Example #2 참조에 의해 함수 인수 전달하기
<?php 기본 인수 값함수는 다음과 같이 스칼라 인수에 대해 C++스타일 기본값으로 지정할수있다:
Example #3 함수에 기본 인수 사용하기
<?php 위 예제의 출력: Making a cup of cappuccino. Making a cup of . Making a cup of espresso.
PHP는 array와 특별형
Example #4 스칼라 형이 아닌 기본값 사용하기
<?php 기본값은 상수 표현식이 될수 있으나 (예를 들면) 변수나 클래스 멤버가 될수는 없다. 기본 인수를 사용할때에는 모든 기본값은 기본값을 쓰지 않는 인수의 오른쪽으로 가야 한다; 그렇지 않으면, 기대하던대로 작동하지 않을것이다. 다음 예제 코드를 참고:
Example #5 기본 함수 인수가 잘못 사용된 예
<?php 위 예제의 출력: Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/phptest/functest.html on line 41 Making a bowl of raspberry . 위 코드를 아래 코드와 비교하라:
Example #6 기본 함수 인수의 정확한 사용예
<?php 위 예제의 출력: Making a bowl of acidophilus raspberry.
Type declarations
Type declarations allow functions to require that parameters are of a certain type at call time. If the given value is of the incorrect type, then an error is generated: in PHP 5, this will be a recoverable fatal error, while PHP 7 will throw a TypeError exception.
To specify a type declaration, the type name should be added before the
parameter name. The declaration can be made to accept Valid types
예제Example #7 Basic class type declaration
<?php 위 예제의 출력: C D Fatal error: Uncaught TypeError: Argument 1 passed to f() must be an instance of C, instance of E given, called in - on line 14 and defined in -:8 Stack trace: #0 -(14): f(Object(E)) #1 {main} thrown in - on line 8 Example #8 Basic interface type declaration
<?php 위 예제의 출력: C Fatal error: Uncaught TypeError: Argument 1 passed to f() must implement interface I, instance of E given, called in - on line 13 and defined in -:8 Stack trace: #0 -(13): f(Object(E)) #1 {main} thrown in - on line 8 Example #9 Nullable type declaration
<?php 위 예제의 출력: object(C)#1 (0) { } NULL Strict typingBy default, PHP will coerce values of the wrong type into the expected scalar type if possible. For example, a function that is given an integer for a parameter that expects a string will get a variable of type string. It is possible to enable strict mode on a per-file basis. In strict mode, only a variable of exact type of the type declaration will be accepted, or a TypeError will be thrown. The only exception to this rule is that an integer may be given to a function expecting a float. To enable strict mode, the declare statement is used with the strict_types declaration: Caution
Enabling strict mode will also affect return type declarations.
Example #10 Strict typing
<?php 위 예제의 출력: int(3) Fatal error: Uncaught TypeError: Argument 1 passed to sum() must be of the type integer, float given, called in - on line 9 and defined in -:4 Stack trace: #0 -(9): sum(1.5, 2.5) #1 {main} thrown in - on line 4 Example #11 Weak typing
<?php 위 예제의 출력: int(3) int(3) Example #12 Catching TypeError
<?php 위 예제의 출력: int(3) Error: Argument 1 passed to sum() must be of the type integer, float given, called in - on line 10 가변 길이 인수 목록PHP는 사용자 선언 함수에서 가변 길이 인수 목록을 지원합니다. PHP 5.6 이상에서는 ... 토큰을 사용하고, PHP 5.5 이하에서는 func_num_args(), func_get_arg(), func_get_args() 함수를 사용합니다. PHP 5.6+에서 ...PHP 5.6 이상에서, 인수 목록은 ... 토큰을 포함하여 함수가 가변 수의 인수를 받을 수 있다고 표시할 수 있습니다. 인수는 배열로 주어진 변수에 전달됩니다; 예제: Example #13 가변 인수에 접근하기 위한 ... 사용하기
<?php 위 예제의 출력: 10 또한 함수를 호출할 때 ...을 사용하여 array, Traversable 변수, 또는 literal을 인수 목록에 포함할 수 있습니다. literal into the argument list: Example #14 인수 제공을 위한 ... 사용하기
<?php 위 예제의 출력: 3 3 보통의 위치 인수를 ... 앞에 지정할 수 있습니다. 이 경우, 위치 인수에 어울리지 않는 인수만이 ...로 생성되는 배열에 추가됩니다. ... 토큰 앞에 type hint를 추가할 수 있습니다. 이 정보가 존재할 경우, ...에 들어가는 모든 인수는 해당 클래스의 객체여야 합니다. Example #15 Type hinted variable arguments
<?php 위 예제의 출력: 3 days Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2 마지막으로, ... 앞에 앰퍼샌드를 붙여서(&) 가변 인수를 참조로 전달할 수 있습니다. PHP 구 버전가변 인수로 만들기 위한 특별한 문법은 필요하지 않습니다; 하지만 함수의 인수에 접근하려면 func_num_args(), func_get_arg(), func_get_args() 함수를 사용해야 합니다. 위 예제 중 첫번째를 PHP 5.5 이전에서는 다음과 같이 사용합니다: Example #16 PHP 5.5 이전의 가변 길이 인수 접근하기
<?php 위 예제의 출력: 10 |