在阅读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特有的吗?
答案 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
}