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

标签 php oop inheritance php-5.2

<分区>

在不讨论我是否应该使用类型提示的情况下,谁能告诉我是否有办法在我将子类传递给为父类提供类型提示的构造函数时避免 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 而不是更新的版本,我很抱歉打扰大家。

最佳答案

使用 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" } 

关于php - php构造函数中的父/子类型提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14860402/

相关文章:

javascript - jQuery 中是否有类似 array_unique() 的函数?

php - 如何用 PHP SoapClient 调用重载的 SOAP 方法?

javascript - 使用 require/new 在 node.js 中实例化一个新对象

oop - Vo 代表什么?

c++ - 数据类型 inst 转换正确吗?

html - 如何在 css 中设置特定段落元素的样式而不影响同一类中的其他段落?

JavaScript 非常简单 : 'Read more' . 。 .' Show Less' 应用于 WordPress 的功能?

C++ : Should we init class from parent or call directly class?

c# - Entity Framework 继承

php - 如何为 JavaScript 和 JSON 正确编码 UTF-8?