2013-02-13 1 views
4

타입 힌팅을 사용해야하는지 여부에 관계없이, 부모에게 타입 힌트를주는 생성자에 자식 클래스를 전달할 때 PHP가 에러를 던지는 것을 피할 수있는 방법이 있는지 말해 줄 수 있습니까? 예 :부모/자식 형식 힌트 PHP 생성자?

class Headed extends Image { ... } 

class Dimension { 
    function __construct(Image $image, $arg1, $arg2){ ... } 
} 

PHP 나 제공 :

PHP Error 4096: Argument 1 passed to Dimension::__construct() must be an instance of Image, instance of Headed given 

는 자식 클래스이기 때문에 명백하게도, 이미지 것 이끄는 타입의 목적은, 그것은 준다 그래서 내 생성자를 같이 분석의 몇 가지 방법이있다 형식 힌트하지만 아이들을 허용합니까?

최근 버전 대신 PHP 5.2.5를 사용하고 있기 때문에 이것이 모두에게 불편을 끼쳐 드려 죄송합니다.

+3

테스트 여기에 코드 : http://3v4l.org/. 버전 문제인지 여부를 알려줍니다. –

+0

아마도 인터페이스가 있다면 Image 클래스를 ImageInterface로 구현 한 "ImageInterface"라고 말하면 Image 대신에 ImageInterface를 사용할 수 있습니다. – Sarel

+2

@ JohnConde와 같은 3v4l.org를 사용했고 나에게 적합합니다 : http://3v4l.org/30dkZ (모든 PHP 5.x 버전에서) – gd1

답변

0

사용 php 5.4.3

이 코드를 실행

<?php 

class Image { 
public $a="s"; 
}; 

class Headed extends Image { }; 

class Dimension { 
    function __construct(Image $image) 
    { 
     var_dump($image); 
    } 
}; 

$h = new Headed; 
$d = new Dimension($h); 

?> 

출력 :

object(Headed)#1 (1) { ["a"]=> string(1) "s" }