php7无效返回类型不工作?
我对php7中的返回类型有一个问题,特别是“void” 它适用于所有其他类型,int、string、null、bool和class对象 但是当我使用void时,它期望我返回一个objectvoid的实例,但实际上它不应该期望任何返回,因为void就是为了这个 注意:我正在运行PHP7.0.3 代码如下: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
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)”