键入提示和多个构造函数

时间:2015-07-21 14:48:41

标签: php php-7

我一直在研究PHP7的新功能,并且我认为我可能已经开始准备我的项目了解它引入的新功能,例如标量类型提示。

我遇到的第一个问题是我的各种类的构造函数。我有一些通用的控制器,其行为类似:

public function __construct($data = null) {
    if (is_numeric($data)) {
        $this->controller->createById($data);
    }
    elseif (is_array($data)) {
        $this->controller->createByArray($data);
    }
    elseif (strlen($data) > 0) {
        $this->controller->createByUrl($data);
    }
}

为此方法引入类型提示当然会向所有方向抛出错误。

据我所知,PHP7没有引入对多个构造函数的支持。有没有办法解决这个问题,或者这是该语言的限制之一?

1 个答案:

答案 0 :(得分:6)

正确,这是该语言的局限之一。 (并且无论如何都无法通过类型检查strlen() > 0。这会自动转换为字符串...所以你的方法允许除“”,null和false之外的所有内容?)

通常,草案中有RFC来扩展PHP中的PHP类型: https://wiki.php.net/rfc/union_types

这样你就可以写int | float | array | string $data = null