类方法古怪(PHP)
我遇到一个具有以下方法的类:类方法古怪(PHP),php,Php,我遇到一个具有以下方法的类: class Period { /** @var \DateTime */ public $startDate; /** @var \DateTime */ public $endDate; public static function create(DateTime $startDate, $endDate): Period { return new static($startDate, $endDate); } } 我的问题是关于create(…)-
class Period
{
/** @var \DateTime */
public $startDate;
/** @var \DateTime */
public $endDate;
public static function create(DateTime $startDate, $endDate): Period
{
return new static($startDate, $endDate);
}
}
我的问题是关于create(…)-the“:Period”之后的部分。我以前从未见过这个,也找不到任何关于它的文档(主要是因为我不知道要找什么)。有人能解释一下吗?这是PHP版本7及更高版本中的新功能。这叫做返回类型声明。 在您发布的示例中,它需要方法
create
返回Period
的对象
一个更简单的例子是:
function giveMeAnInt() : int {
return 1;
}
上面的代码是有效的,因为它返回一个整数
function giveMeAnInt() : int {
return "Hello";
}
这是无效的,将返回一个致命错误“致命错误未捕获类型错误:giveMeAnInt()的返回值必须是整数类型,返回字符串”有关详细信息,此代码似乎属于php的时间范围api(类) 示例:要创建表示给定周的新实例,请执行以下操作:
<?php
public static Period::createFromWeek(int $year, int $week): Period
...
这是有道理的。我将把这个标记为正确答案。谢谢只是补充一下,是完整的RFC。