Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类方法古怪(PHP)_Php - Fatal编程技术网

类方法古怪(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。