2017-08-15 45 views
-3
function request($suffix, array $post = array(), $action = NULL) { 
    // do something... 
} 

我在书中看到了一个函数。但是我不明白关键字array$post之前的含义在函数的参数列表中。我觉得省略array会有同样的效果。`array`关键字在PHP函数的参数列表中表示什么?

它是否充当数据类型提示?如果是这样,那么为什么我不能在其他参数之前使用string,integer等?

+1

这意味着参数'$ post' **必须**数组。如果它不是数组,它会抛出一个错误。 – Jer

+1

我相信在PHP 7.0中他们引入了更严格的输入数据的方式。 $ post之前的数组会抛出一个错误,并在正确使用函数时启用正确的处理。 – IsThisJavascript

+0

https://stackoverflow.com/documentation/php/1430/type-hinting#t=201708151042557575845 – Ghost

回答

5
function request($suffix, array $post = array(), $action = NULL) { 
    // do something... 
} 

该函数接受的参数的数量,参数$岗位的类型是暗示数组

array $post = array() 

在这里我们可以看到,$帖子指定一个空数组作为默认,所以它符合其键入

$post = array() and array $post = array() will return the same 

如果你试图通过一些比其他数组作为参数传递给函数,你会得到错误

type hinting指的是更多的解释

+0

非常感谢!然后我只是想知道为什么只有'array'类型暗示将数据类型限制为PHP中的Array,而没有其他类型的暗示来限制其他类型,例如'integer','string'等。 (如果我使用'integer','string'等,我会在IDE中得到语法错误提示。我正在使用PHP 5.6。) – Benson

+2

请注意,在PHP5中,这种类型的提示将被解释为要求第一个参数是类“string”的一个实例而不是字符串。因此,在PHP5中,将字符串传递到以此方式编写的类会导致错误。在PHP7中,字符串是必需的。 - 来源:https://torquemag.io/2016/09/wordpress-developers-guide-type-hinting/ @Benson – Jer

+2

http://php.net/manual/en/functions.arguments.php#functions.arguments。型号声明 – Cezary

相关问题