在PHP中,方法参数前面的数组密钥是什么意思?

时间:2016-01-19 07:18:21

标签: php arrays types type-declaration

我偶然发现PHP中的函数声明,参数前面有关键字array。既然你没有在PHP中声明类型,那看起来真的很适合我。这只是一个错误',某人放在那里没有评估,或者它实际上意味着什么?

public function sendSMTPMail(array $mailContent) { }

我的感觉是,它不应该在那里而且它什么都不做,但也许我错了?

有什么不同吗?
public function sendSMTPMail($mailContent) { }

2 个答案:

答案 0 :(得分:1)

这被称为类型声明,它在PHP5中也称为类型提示。

类型声明允许函数将参数指定为特定类型。如果给定值的类型不正确,则会生成错误:在PHP 5中,这将是可恢复的致命错误,而PHP 7将抛出TypeError异常。

要指定类型声明,应在参数名称前添加类型名称。如果参数的默认值设置为NULL,则可以使声明接受NULL值。

有效类型

Type                    Description                                                Minimum PHP version
----------------------------------------------------------------------------------------------------------
Class/interface name    The parameter must be an instanceof the given class         PHP 5.0.0
                        or interface name.                 
----------------------------------------------------------------------------------------------------------                            
self                    The parameter must be an instanceof the same class as       PHP 5.0.0
                        the one the method is defined on. 
                        This can only be used on class and instance methods.    
----------------------------------------------------------------------------------------------------------
array                   The parameter must be an array.                             PHP 5.1.0
----------------------------------------------------------------------------------------------------------
callable                The parameter must be a valid callable.                     PHP 5.4.0
----------------------------------------------------------------------------------------------------------
bool                    The parameter must be a boolean value.                      PHP 7.0.0
----------------------------------------------------------------------------------------------------------
float                   The parameter must be a floating point number.              PHP 7.0.0
----------------------------------------------------------------------------------------------------------
int                     The parameter must be an integer.                           PHP 7.0.0
----------------------------------------------------------------------------------------------------------
string                  The parameter must be a string.                             PHP 7.0.0
----------------------------------------------------------------------------------------------------------

原始来源: PHP Function Argument Type Declaration

在您的情况下,请查看以下示例:

function test(array $array)
{
    foreach($array as $k=>$v)
    {

    }
}

test(array("string")); //passed - no error
test("string"); //failed - catchable error

输出:

  

捕获致命错误:传递给test()的参数1必须是类型数组,给定字符串,在第12行的/var/www/html/test/test1.php中调用,并在/ var / www / html中定义第3行/test/test1.php

答案 1 :(得分:0)

用于类型提示。如果传递给它的数据属于其他类型,则会引发错误(> = PHP 5 )。

  

类型声明允许函数将参数指定为特定类型。如果给定值的类型不正确,则会生成错误:在PHP 5中,这将是可恢复的致命错误,而PHP 7将引发TypeError异常。

Type Declaration

如果未定义类型,则变量将转换为传递的数据类型。在这种情况下,如果对传递给它的数据进行了任何验证,则可能在执行期间导致问题。