2010-04-28 3 views
3

클래스의 각 변수가 정의 된 PHP에서 정의 된 클래스 값 객체가 있다고 가정합니다. 비슷한 :PHP 값 객체 자동 생성

class UserVO { 
    public $id; 
    public $name; 
} 

이제 배열 ($ data)을 기대하는 다른 클래스에 함수가 있습니다.

function save_user($data) { 
//run code to save the user 
} 

$ 데이터 매개 변수를 UserVO로 입력해야한다는 것을 어떻게 알 수 있습니까? 나는 다음과 같이 할 수있는 코드 완성 할 수 : 나는 다음과 같은 것을 추측하고있어

$something = $data->id; //typed as UserVO.id 
$else = $data->name; //typed as UserVO.name 

,하지만이 작동 PHP5에서이 분명히 나던 작업

$my_var = $data as new userVO(); 

답변

7

사용 type hint 또는 instanceof 연산자.

유형 지정된 유형의 인스턴스 UserVO 아닌 경우 오류가 발생합니다

public function save_user(UserVO $data); 

을 암시.

public function save_user($data) 
{ 
    if ($data instanceof UserVO) 
    { 
     // do something 
    } else { 
     throw new InvalidArgumentException('$data is not a UserVO instance'); 
    } 
} 

당신이 잡을과 함께 일할 수있을 것 InvalidArgumentException (이 더 자세한 예외로 저를 지적 salathe 감사는) 발생합니다 instanceof를

.

그런데

의 [`InvalidArgumentException`] (http://php.net/invalidargumentexception)에서 발생할 수있는 다른 예외와 구별 도움이 여기에 유용하게 사용할 수 duck typing

+1

에 대해 살펴 'save_user'. – salathe

+0

@salathe, 네 말이 맞아, 나는 너의 의견에 따라 나의 대답을 편집했다. –