PHP - 函数声明中的双点(冒号)符号

时间:2018-02-05 11:59:32

标签: php function symfony

在阅读a post on Medium时,我偶然发现了一个我无法理解的功能签名。

public function index(): Response
{
    $posts = $this->getDoctrine()
                ->getRepository(Post::class)
                ->findAll();
    return $this->render('posts/list.html.twig', ['posts' => $posts]);
}

在这种情况下: Response的目的是什么?是Symfony特有的吗?

1 个答案:

答案 0 :(得分:3)

PHP 7 增加了对return type declarations的支持。与参数类型声明类似,返回类型声明指定将从函数返回的值的类型。返回类型声明可以使用相同的类型,可用于参数类型声明。

严格键入也会对返回类型声明产生影响。在默认的弱模式下,如果返回的值不是那种类型,则它们将被强制转换为正确的类型。在强模式下,返回的值必须是正确的类型,否则将抛出TypeError。

PHP 7.1 添加了一个可以为空的返回类型,声明为: ?string

一些例子:

function getNothing(): void {
    return; // valid
}

function getNothing(): void {
    // do nothing
    // valid
}

function getAge(): ?int  {
    return null; // valid
}

function getAge(): ?int  {
    return 18; // valid
}

function getAge(): int  {
    return 18; // valid
}

function getAge(): ?int  {
    return null; // valid
}

function getAge(): int  {
    return null; // error
}