作为返回类型无效编辑:原文:今后的工作

2022-08-30 09:56:35

我用PHP 7测试返回类型。

我创建了一个简单的脚本来测试 PHP 7 的返回类型:

<?php

Class Obj {

    public function __construct(){

    }

    public function test(): string { //a string needs to be returned
        return "ok";
    }

}

function foo(): Obj { //instance of Obj needs to be returned
    return new Obj();
}

$o = foo();
echo $o->test(); // output: ok

现在,在其他编程语言中,当您指定返回类型时,这意味着您无法返回任何内容,否则将收到错误。所以我写了这个脚本:void

<?php

    function foo(): void {

    }

    foo(); 

现在,在上面的脚本中,预期的输出为零。相反,它给了我一个致命的错误:

致命错误:foo() 的返回值必须是 void 的实例,第 2 行不返回任何内容

我的问题是(我找不到它),在PHP 7中会有类似的类型吗?void


答案 1

编辑:

针对 void 返回类型的新的单独 RFC 已发布,已通过投票,并在 PHP 7.1 中实现。
PHP 中现在有一个返回类型。:)void

原文:

摘自 wiki.php.net

今后的工作

超出本RFC范围的未来工作的想法包括:

  • 允许函数声明它们根本不返回任何内容(在 Java 和 C 中为 void)

因此,目前无法声明您不返回任何内容。
我不知道在你的情况下什么是最好的,但我可能只是暂时不声明返回类型。

回答您在PHP 7中是否会有返回类型的问题:
目前尚无保证,但我认为很可能以某种方式实现或同义词。voidvoid


答案 2

php 7.1 的返回类型被接受。所以它将来会到来。void

关于它如何工作的一些例子:

function should_return_nothing(): void {
    return 1; // Fatal error: A void function must not return a value
}

function returns_null(): void {
    return null; // Fatal error: A void function must not return a value
}
function lacks_return(): void {
    // valid
}
function returns_nothing(): void {
    return; // valid
}

请参阅Andrea Faulds的RFC以获取更多信息!


推荐