PHP:命名空间中的返回值声明

4

我最近开始学习PHP,由于我习惯于强类型语言(C ++,Java),因此我非常希望利用类型提示和返回类型声明。然而,当我尝试为原始类型使用返回类型声明时,我会收到致命错误,指出我的函数未返回正确的类型。

这里是一个代码示例:

<?php
namespace Foo;

class Bar {

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

}

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

?>

这将导致致命错误,指出Bar::bar没有返回Foo\boolean类型的值。因此,我尝试使用全局命名空间将函数原型更改为:

public function bar() : \boolean

但是,我收到了一个致命错误,它声明我的函数没有返回布尔类型的值。我猜PHP正在全局命名空间中寻找名为boolean的类型,而不是原始类型。那么,我应该如何表明我要让我的函数返回原始类型boolean的值呢?


1
类型是 bool 而不是 boolean - Roman
1
你还应该在每个文件的第一行加上 declare(strict_types=1); - Richard Turner
1个回答

8
布尔值的类型提示实际上是bool。试试这个:
<?php
namespace Foo;

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

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

我感觉很蠢。谢谢你的澄清 :) - Krisztián Szabó
不,这并不愚蠢 :) PHP 允许类名以小写字母开头,并且在开始检查标量类型提示之前,将“bool”类型提示为“boolean”(在注释中)非常常见。这是另一种工具无法帮助您发现错误的情况。 - Richard Turner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接