2017-01-19 46 views
1

我发现有人写这样的代码:如何在PHP函数使用冒号

class Abc 
{ 
    public function foo(int $bar) : string {} 
} 

是什么:意味着在一个函数?这是一个骗局还是什么? string更改为boolarrayint有什么影响?

我只是不明白为什么我们需要: xxx,以及何时使用它?

+0

它只是定义了返回类型。 –

+0

查看手册http://php.net/manual/en/functions.returning-values.php – apokryfos

回答

5

即返回类型声明,用PHP 7

您在冒号后面看到的类型引入的一个特性,就是将与函数返回的类型。

有两种选择:
默认情况下,返回的值将被转换为需要返回的类型。
在你的情况下,它总是会被转换成一个字符串。

如果严格键入被启用(通过declare(strict_types=1);),输出需要是一个字符串,否则会引发TypeError。

无论哪种方式:作为开发人员,您始终确信返回类型是字符串。

定义返回类型不是强制性的,所以如果你不需要它,你可以离开它。这种情况下的返回类型可以是任何东西。

+0

感谢您的解释 – user7440009

0

这是返回类型声明。在你的例子中,它意味着函数应该返回一个字符串。如果返回字符串(例如定义了__toString()的对象),它将被转换为一个字符串,否则会出错

0

它声明函数的返回类型。

function foo (int $bar) : string { } 

int $bar部分说,$栏参数必须是整数,而: string部分表示该函数将返回一个字符串。如果该函数未传递int或不返回字符串,则会引发TypeError。