在php构造函数中的父/子类型提示?

时间:2013-02-13 18:24:40

标签: php oop inheritance php-5.2

如果不考虑我是否应该使用类型提示,有人可以告诉我,当我将子类传递给为父类型提示的构造函数时,是否有办法避免PHP抛出错误? E.g:

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而不是更新版本而不是我很抱歉打扰所有人。

1 个答案:

答案 0 :(得分: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" }