我偶然发现PHP中的函数声明,参数前面有关键字array
。既然你没有在PHP中声明类型,那看起来真的很适合我。这只是一个错误',某人放在那里没有评估,或者它实际上意味着什么?
public function sendSMTPMail(array $mailContent) { }
我的感觉是,它不应该在那里而且它什么都不做,但也许我错了?
有什么不同吗?public function sendSMTPMail($mailContent) { }
答案 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异常。
如果未定义类型,则变量将转换为传递的数据类型。在这种情况下,如果对传递给它的数据进行了任何验证,则可能在执行期间导致问题。