我在php7中遇到了返回类型的问题,特别是" void"。
它适用于所有其他类型,int,string,null,bool,类对象。
但是当我使用void时,它希望我返回一个对象void的实例,但实际上它不应该指望任何返回,因为它是什么空的。
注意:我正在运行PHP 7.0.3
这是代码:
public static function setResponseCode(int $code) : void
{
http_response_code($code);
}
,错误信息是:
未捕获TypeError:CodeBase的返回值\ HttpRequester :: setResponseCode()必须是void的实例,在/var/www/html/src/HttpRequester.php:86中返回无堆栈跟踪:#0 / var / www /html/index.php(103):CodeBase \ HttpRequester :: setResponseCode(500)在第86行的/var/www/html/src/HttpRequester.php中抛出#1 {main}
答案 0 :(得分:26)
Void返回类型适用于PHP 7.1(当您提出此问题时尚未发布)。 From the RFC
版本:0.2.1
日期:2015-02-14(v0.1,后来撤回),2015-10-14(v0.2,复兴)
作者:Andrea Faulds,ajf @ ajf.me
状态:已实施(PHP 7.1)
答案 1 :(得分:14)
我刚刚在这里找到答案:https://wiki.php.net/rfc/void_return_type
这将是PHP 7.1中的一项功能
答案 2 :(得分:8)
没有,直到PHP 7.1。对于PHP 7.0,您必须完全省略void
函数/方法的返回类型。
function printLn($a) {
echo "$a\n";
}
不幸的是,你对这个函数/方法没有类型安全性,如果你开始从它返回一些东西,就不会抛出TypeError
。
幸运的是,PHP 7.1 fixes this:
添加了对新的void返回类型的支持。它要求函数不返回任何值。
这是PHP 7.1的正确语法:
function should_return_nothing(): void {
return 1; // Fatal error: A void function must not return a value
}
这在the proposal that created return type hints期间推迟了:
我们保留当前的类型选项。过去的建议提出了新的类型,如void,int,string或scalar;此RFC不包含任何新类型。请注意,它允许将self和parent用作返回类型。 ...
未来工作
超出此RFC范围的未来工作的想法包括:
- 允许函数声明它们根本不返回任何内容(在Java和C中为void)
NULL
也不允许作为返回类型。
答案 3 :(得分:0)
<强> TL;博士强>
返回类型void自PHP 7.1起已经可用。
工作语法是:
<?php
function procedure(): void
{
// return 'will not work';
}
echo procedure();
答案 4 :(得分:-4)
为什么不使用
function printLn($a) {
echo $a;
return;}
与虚空相同。
您甚至可以仅使用echo
删除返回