2012-04-09 3 views
0

전달 된 변수의 유형을 일반 객체로 정의해야합니까?객체로 강제 변수 전달

는 시도 :

public function set($service = null, (object) $instance) { 
    [..] 
} 

stdClass 도움을? 방법?

감사합니다.

답변

1

아니요, PHP에서는 모든 클래스가 공통 조상에서 파생되지 않습니다.

그래서 의심스럽게 당신은

+0

그래서 'is_object'가있는 함수 안에서만 해결책을 찾으십니까? –

+1

@ 가브리엘 산토스 : 예. 아니면 가능하다면 인터페이스를 만들고 각각의 필수 클래스에 구현해주십시오 – zerkms

+0

아니요,이 경우 인터페이스가 너무 추합니다. 도와 주셔서 감사합니다! –

1

아니, 객체가 어떤 클래스되어야한다 "모든 클래스의 객체를"상태로 현재 PHP의 구현을 사용할 수 있습니다. 당신은 기본 클래스를 생성하는 것입니다 개체의 유형

public function set($service = null, ClassName $instance) { 
    //now the instance HAS to be the object of the class 
} 

또는 기본 트릭으로 모든 클래스의 이름을 지정할 수 있습니다 자신

Class GenericObject {} 
$myobj = new GenericObject(); 
$myobj -> myCustomVar = 'my custom var'; 

//Now send it 
public function set($service = null, GenericObject $instance) { 
    [...] 
} 
+0

샘플을 보내 주셔서 감사하지만 서비스 로케이터 용입니다.이 방법으로는 올바르게 작동하지 않습니다. –

0

가브리엘,

싶은 것은 검사 인 경우 변수가 객체 인 경우 다음 작업을 수행 할 수 있습니다.

public function set($service = null, $instance) { 
    if (!is_object($instance)) return null; //or whatever 
    [..] 
} 

그? 선언문을 사용하면 변수가 객체가 아닌 경우 예외가 발생합니다. 객체를 캐스트하지 않습니다.

+0

"예외 포수"가 있습니다. –

+0

'set' 함수 안에서'is_object'에 대해서 알고 있습니다 만, 캐스트에 대해서 생각했습니다. –

+0

@Gabriel Santos : 정확하게 "casts"와는 아무런 관련이 없습니다. "type hinting" – zerkms