类方法怪异(PHP)

时间:2016-07-27 13:07:34

标签: php

我遇到了一个具有以下方法的类:

class Period
{
/** @var \DateTime */
public $startDate;

/** @var \DateTime */
public $endDate;

public static function create(DateTime $startDate, $endDate): Period
{
    return new static($startDate, $endDate);
}
}

我的问题是关于创建后的部分(...) - ":期间"。我以前从未见过这个,也找不到任何关于它的文档(主要是因为我不知道该找什么)。任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:2)

这是PHP 7及更高版本中的新功能。它被称为返回类型声明。 在您发布的示例中,需要方法create才能返回Period的对象。

一个更简单的例子是:

function giveMeAnInt() : int {
    return 1;
}

以上代码有效,因为它返回一个整数。

function giveMeAnInt() : int {
    return "Hello";
}

这是无效的并且会返回致命错误“FATAL ERROR未捕获TypeError:giveMeAnInt()的返回值必须是整数类型,返回字符串”

答案 1 :(得分:1)

看起来这段代码属于php(class)的时间范围api,更多信息http://period.thephpleague.com/

示例:创建表示给定周的新实例:

<?php

public static Period::createFromWeek(int $year, int $week): Period
...

$ year 参数必须是有效年份;
$ week 参数必须是有效的一周(1到53之间);

此处有更多示例:http://period.thephpleague.com/examples/