2016-09-09 2 views
1

매개 변수로 임의의 이송 가능한 객체를 허용하는 함수 (예 : Laravel Collection/Array)를 만들고 싶습니다. 이 조건을 함수 매개 변수에 입력 할 수있는 방법이 있습니까 ??PHP - Laravel Collection 또는 Array에 대한 힌트 유형

function test(array $traversable) 
{ 
    print_r($traversable); 
} 

function test(Illuminate\Support\Collection $traversable) 
{ 
    print_r($traversable); 
} 

과 DocBlock가 iterable typehint을 소개합니다

/** 
* Function to do something 
* 
* @param Collection|Array $traversable Traversable parameter 
* @return null Absolutely nothing 
*/ 

답변

3

PHP 7.1이어야한다 :

나는 하나의 정의에 다음과 같은 두의 효과를 원하는 정확하게 수행 할 것입니다 :

function test(iterable $items) { /*...*/ } 

PHP - rfc:iterable을 참조하십시오.

그때까지 Traversablearray을 모두 허용하려는 경우 유형 힌트를 사용할 수 없습니다. 수행 할 수있는 유일한 작업은 올바른 @param 주석을 사용하여 문서화하는 것입니다.

/** 
* @param \Traversable|array $items 
*/ 
function test($items) { /*...*/ }