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 回答