簡體   English   中英

php7 void 返回類型不起作用?

[英]php7 void return type not working?

我在 php7 中的返回類型有問題,特別是“void”。

它適用於所有其他類型,int、string、null、bool、class 對象。

但是當我使用 void 時,它希望我返回一個對象 void 的實例,但實際上它不應該期望任何返回,因為這就是 void 的用途。

注意:我正在運行 PHP 7.0.3

這是代碼:

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

    }

和錯誤信息是:

未捕獲的類型錯誤:CodeBase\\HttpRequester::setResponseCode() 的返回值必須是 void 的實例,在 /var/www/html/src/HttpRequester.php:86 中沒有返回堆棧跟蹤:#0 /var/www/html/ index.php(103): CodeBase\\HttpRequester::setResponseCode(500) #1 {main} 在第 86 行的 /var/www/html/src/HttpRequester.php 中拋出

Void 返回類型適用於 PHP 7.1(在您詢問時尚未發布)。 來自 RFC

版本:0.2.1
日期:2015-02-14(v0.1,后來撤回),2015-10-14(v0.2,復興)
作者:Andrea Faulds,ajf@ajf.me
狀態:已實施(PHP 7.1)

我剛剛在這里找到答案: https : //wiki.php.net/rfc/void_return_type

這將是 PHP 7.1 的一個特性

不,直到 PHP 7.1。 對於 PHP 7.0,您必須完全省略void函數/方法的返回類型。

function printLn($a) {
    echo "$a\n";
}

不幸的是,你沒有這個函數/方法的類型安全,如果你開始從它返回一些東西,也不會TypeError

幸運的是, PHP 7.1 解決了這個問題

添加了對新的 void 返回類型的支持。 它要求函數不返回任何值。

這是 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 范圍的未來工作的想法包括

  • 允許函數聲明它們根本不返回任何內容(Java 和 C 中的 void)

NULL也不允許作為返回類型。

tl;博士

返回類型 void 自 PHP 7.1 起就可用了。

工作語法是:

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

echo procedure();

為什么不只是使用

   function printLn($a) {
    echo $a;
    return;}

它與void相同。

您甚至可以只用回聲刪除返回

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM