我习惯于使用以下通用语法在 PHP 类中定义自定义函数:
public function my_function(arg1, arg2, ...)
{
//Cuerpo de la función, con o sin retorno
}
我最近看到一段代码,它的函数定义如下:
public function my_function(arg1, arg2, ...): array
{
//Cuerpo de la función, con o sin retorno
}
我搜索了 PHP 文档并用谷歌搜索,但没有找到关于: array
函数声明中的部分做什么的明确解释,或者它为什么在那里,或者任何具体的东西。
有谁知道这是关于什么的,或者它是如何工作的?
这称为返回类型声明,它是 PHP 7 中引入的一种新语法类型,用于声明方法返回的数据类型(在本例中为数组)。
这不仅限于数组,你可以使用
int
,float
甚至你自己的类:这些不仅仅是为了便于阅读。如果函数返回的类型与指定的类型不同,则该值将转换为指定的类型。如果不能强制,或者启用了严格模式,则
Type Error
.资料来自:
方法声明后的冒号?
有关更多信息,您可以查看文档:
返回类型声明
从 PHP 7 开始,您可以在函数声明中定义您期望的返回类型。例如,在您的情况下,它期望返回一个数组,如果没有,它可能会引发 TypeError 异常。
来源:https ://www.php.net/manual/es/functions.returning-values.php#functions.returning-values.type-declaration
补充已经提到的内容,请记住您还必须为参数声明数据类型,这样解释器不仅可以识别函数将返回的值,而且还知道它期望的值类型作为函数的参数。函数;因此:
这会起作用,因为我告诉它期望一个字符串作为参数,并且在调用函数时传递一个字符串:
离开:
但是,如果我仍然将函数的输出元素声明为一个数组,但我传递了一个不同于预期值(字符串)的值作为参数,我将得到如下函数输出:
将打印:
对于前一种情况,如果它返回一个向量,但没有返回预期值,对于这种情况,我们必须在开始标记之后声明以下指令:
因此,如果我们尝试重复执行,它将给我们
而如果意图是:
所以它可能是这样的:
每个元素都是通过引用预期的数据类型来标识的,尽管它们是不同的,将这些参数传递给我们将获得的函数:
只要两个参数之一不符合预期的数据类型,即使您指示返回是一个向量,您也会再次遇到涉及已经提到的内容的致命错误。
文档