2017-02-19 70 views
3

我最近开始学习PHP,由于我习惯于强类型语言(C++,Java),所以我更喜欢使用类型提示和返回类型声明。但是当我试图使用返回类型声明的基元时,我得到一个致命的错误,指出我的函数没有返回正确的类型。PHP:命名空间中的返回值声明

这里是一个代码示例:

<?php 
namespace Foo; 

class Bar { 

    public function bar() : boolean { 
     return true; 
    } 

} 

$bar = new Bar(); 
$bar->bar(); 

?> 

这将导致致命的错误,说明吧::酒吧不返回美孚\布尔类型的值。所以,我想通过改变函数原型诉诸全局命名空间:

public function bar() : \boolean 

但后来我得到了一个致命的错误,说明我的函数不返回boolean类型的值。我猜PHP是在全局命名空间中寻找一个名为boolean的类型,而不是原始类型。太棒了,那么我该如何表明我希望我的函数返回基本类型布尔值的值?

+1

这个类型是'bool'不是'boolean'。 – Roman

+1

您还应该将'declare(strict_types = 1);'作为每个文件的第一行。 –

回答

3

布尔值的提示类型实际上是bool。试试这个:

<?php 
namespace Foo; 

class Bar { 
    public function bar() : bool { 
     return true; 
    } 
} 

$bar = new Bar(); 
$bar->bar(); 
+0

该死的,我觉得很蠢。感谢您的澄清:) – PandarinDev

+0

不,这不愚蠢:) PHP允许类以小写字母开头,直到它开始检查标量类型提示,看到'bool'类型 - 暗示为'布尔值'(在评论中)。这是工具无法帮助您发现错误的另一个案例。 –