8

我一直在研究 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 没有引入对多个构造函数的支持。有没有办法解决这个问题,或者这是语言的限制之一?

4

1 回答 1

6

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

一般来说,草案中有 RFC 来扩展 PHP 在 7.1 中的类型提示: https ://wiki.php.net/rfc/union_types

那将允许您编写int | float | array | string $data = null.

于 2015-07-21T18:59:08.747 回答