2011-10-24 2 views
5

함수 인수를 여러 가능한 유형으로 정의 할 수 있습니까? 예를 들어, 함수는 무언가를 성취하기 위해 문자열이나 정수를 취할 수 있습니다. 어떻게 든 이것을 이렇게 정의 할 수 있습니까?PHP에서 다중 함수 인수 유형 정의

function something(int|string $token) {} 

지원되는 인수 당 하나의 유형입니까?

(마음 당신은, 난 그냥 내 인자가 입력이 좋아, 내가 나중에 입력을 필터링 할 수 있습니다 알고) 당신이 할 수있는 최선은 유형 힌팅라고하며 여기에 설명

답변

2

을 :

http://php.net/manual/en/language.oop5.typehinting.php

특히 클래스 유형이나 배열 유형에 대해 힌트를 줄 수는 있지만 (매뉴얼에서 말하는 것처럼) "int와 string을 사용하는 전통적인 유형 힌팅은 지원되지 않습니다." 그래서 당신이 성취하려는 것은이 수준에서 가능하지 않다고 생각합니다.

그러나 자신 만의 래퍼 등을 만들 수 있습니다.이 문제를 처리하는 데는 수천 가지 방법이 있습니다.

+1

건배 이외의 것을 사용한다, 나는 마지막으로 지금 타입 힌팅을라고 알고있다. – Swader

+1

실제로 PHP 인터프리터의 힌트이기 때문에 Hinting이라고 부릅니다. 힌트와 일치하지 않는 경우 "인위적으로"인수 유형을 검사하고 오류가 발생하도록 지시됩니다. 정적으로 형식화 된 언어에서는 함수에 대한 구문의 일부이며 기본적으로 필수 항목이며 실제로 호출되지는 않습니다 ... 실제로 다른 이름이 있다고 생각하지 않습니다 ... – Palantir

+0

그건 아주 좋습니다 알아. 고마워! – Swader

0

PHP는 동적으로 입력됩니다 -하지만 타입 힌트는 언어에 추가되었습니다 - 그래서 당신이 매개 변수를 암시하지 한 경우 당신은 당신이 원하는 유형 전달할 수 있습니다

function something($token) 
{ 
    if (is_numeric($token)) { 
    // its a float, double, integer 

    } else { 
    // its a string, array, object 
    } 
} 

(오프를 내 머리 꼭대기에서 나는 자원이 어떻게 취급되는지 모르겠다.)

그러나 당신이 강력하게 형식화 된 언어로 프로그래밍 할 경우, 다음 (IMHO)는 PHP

+0

'is_numeric'도 숫자 문자열을 포함하지만 리소스는 포함하지 않습니다. – deceze

+0

감사합니다. 그냥 HipHop 용으로 최적화하려고합니다. – Swader