4

型ヒントを使用する必要があるかどうかに関係なく、親の型ヒントを使用するコンストラクターに子クラスを渡すときに 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

タイプ Headed のオブジェクトは明らかに Image でもあります。これは子クラスであるため、コンストラクターを表現して、タイプのヒントを与えるが子を許可する方法はありますか?

これが最新バージョンではなく PHP 5.2.5 を使用していることが原因である場合は、ご迷惑をおかけして申し訳ありません。

4

1 に答える 1

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" } 
于 2013-02-13T19:00:08.813 に答える