php7无效返回类型不工作?

php7无效返回类型不工作?,php,return-type,type-hinting,php-7,Php,Return Type,Type Hinting,Php 7,我对php7中的返回类型有一个问题,特别是“void” 它适用于所有其他类型,int、string、null、bool和class对象 但是当我使用void时,它期望我返回一个objectvoid的实例,但实际上它不应该期望任何返回,因为void就是为了这个 注意:我正在运行PHP7.0.3 代码如下: public static function setResponseCode(int $code) : void { http_response_code($cod

我对php7中的返回类型有一个问题,特别是“void”

它适用于所有其他类型,int、string、null、bool和class对象

但是当我使用void时,它期望我返回一个objectvoid的实例,但实际上它不应该期望任何返回,因为void就是为了这个

注意:我正在运行PHP7.0.3

代码如下:

   public static function setResponseCode(int $code) : void
    {
        http_response_code($code);

    }
错误消息是:

未捕获类型错误:CodeBase\HttpRequester::setResponseCode()的返回值必须是void的一个实例,在第86行/var/www/html/src/HttpRequester.php:86堆栈跟踪:#0/var/www/html/index.php(103):CodeBase\HttpRequester::setResponseCode(500)#1{main}中抛出/var/www/html/src/HttpRequester.php


Void返回类型适用于PHP7.1(当您询问此问题时,它尚未发布)

版本:0.2.1
日期:2015-02-14(v0.1,之后撤销),2015-10-14(v0.2,复兴)
作者:Andrea Faulds,ajf@ajf.me
状态:已实现(PHP 7.1)


我刚刚在这里找到了答案:


它将成为PHP7.1中的一项功能。不,在PHP7.1之前没有。对于PHP7.0,必须完全省略
void
函数/方法的返回类型

function printLn($a) {
    echo "$a\n";
}
不幸的是,您没有这个函数/方法的类型安全性,如果您开始从中返回某些内容,则不会抛出
TypeError

幸运的是:

添加了对新的作废退回类型的支持。它要求函数不返回任何值

这是PHP 7.1的正确语法:

function should_return_nothing(): void {
    return 1; // Fatal error: A void function must not return a value
}
这项工作在下列期间推迟:

我们保留当前类型选项。过去的提案提出了新的类型,如void、int、string或scalar;此RFC不包括任何新类型。请注意,它确实允许将self和parent用作返回类型。

未来工作

不在本RFC范围内的未来工作设想包括

function should_return_nothing(): void {
    return 1; // Fatal error: A void function must not return a value
}
  • 允许函数声明它们根本不返回任何内容(在Java和C中为void)
NULL
也不允许作为返回类型。

tl;dr

返回类型void自PHP7.1开始工作,PHP7.1已经可用

工作语法为:

<?php
function procedure(): void
{
//  return 'will not work';
}

echo procedure();

尝试添加一个
返回这是有效的。当
http\u response\u code
返回一个值时,它可能会感到困惑,认为结果是错误的returned@RiggsFolly或者可能还没有void返回类型:)@riggsfully使用
http_response_code()就可以了,您没有返回它是什么。请不要使用此功能!它可以提高可读性。我刚刚检查过,这在PHP7.1中是可能的:所以基本上,答案是“还没有,但很快(tm)”