PHP方法的返回值

不只是PHP,大部分編程語言的函數或者叫方法,均可以用return來定義方法的返回值。從函數這個叫法來看,自己它就是一個計算操做,所以,計算總會有個結果,若是你在方法體中處理告終果,好比進行了持久化保存,那麼這個函數就不用返回任何內容。而計算的結果是要給外部使用的,這時候就要將計算結果進行返回了。php

 

return關鍵字git

function testA($a, $b)
{
    echo $a + $b;
}

var_dump(testA(1, 2)); // NULL

function testB($a, $b)
{
    return $a + $b;
}

var_dump(testB(1, 2)); // 3

function testC($a, $b)
{
    return;
    echo $a + $b; // 後面不會執行了
}

var_dump(testC(1, 2)); // NULL

不用return或者直接return;都會返回NULL,return會阻斷方法體中後續代碼的執行。若是要返回多個值,只能使用數組組裝數據。github

function testD($a, $b)
{
    return [
        $a + $b,
        $a * $b,
    ];
}

var_dump(testD(1, 2)); // [3, 2]

 

返回值類型聲明編程

關於返回值這一塊仍是比較好理解的。下面纔是重頭戲,在PHP7的新特性中,返回值聲明是很是亮眼的一道風景。數組

function testE($a, $b) : bool
{
    if($a+$b == 3){
        return TRUE;
    }else{
        return NULL;
    }
}

var_dump(testE(1, 2)); // true
var_dump(testE(1.1, 2.2)); //TypeError: Return value of testE() must be of the type bool, null returned

如上例所示,若是返回值不是bool類型,那麼將直接報TypeError的錯誤。微信

那麼定義了返回值類型聲明有什麼好處呢?咱們在PHP方法參數的那點事兒有介紹過類型聲明的好處,這裏就不過多贅述了,無論是參數類型聲明仍是返回值類型聲明,都是同樣的。編程語言

function testF($a, $b): array
{
    return [
        $a + $b,
        $a * $b,
    ];
}
var_dump(testF(1, 2)); // [3, 2]

interface iA{

}
class A implements iA
{}
class B extends A
{
    public $b = 'call me B!';
}

function testG(): A
{
    return new B();
}

function testH(): B
{
    return new B();
}

function testI(): iA
{
    return new B();
}

var_dump(testG()); // B的實例
var_dump(testH()); // B的實例
var_dump(testI()); // B的實例

一樣,數組和類類型都是能夠聲明定義的。不過除此以外,返回值聲明還能夠定義void。它的做用其實就是聲明返回值爲NULL,不能直接寫:NULL,而只能用:void來進行聲明。函數

function testJ(): void
{
    echo "testJ";
    // return 1;
}
var_dump(testJ());

這時,若是嘗試進行任何的return返回,都會直接報錯:Fatal error: A void function must not return a value。學習

 

總結測試

咱們能夠看到,PHP在不斷的發展中一直在吸收其餘語言中的優秀特性。很明顯,添加這些類型聲明的目的就是爲了未來的編譯器作準備的。這也是PHP8的一個重要特性,讓咱們拭目以待吧!

測試代碼:
https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E6%96%B9%E6%B3%95%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC.php

參考文檔:
[https://www.php.net/manual/zh/functions.returning-values.php][https://www.php.net/manual/zh/functions.returning-values.php]

===============

關注公衆號:【硬核項目經理】獲取最新文章

添加微信/QQ好友:【xiaoyuezigonggong/149844827】免費得PHP、項目管理學習資料

知乎、公衆號、抖音、頭條搜索【硬核項目經理】

B站ID:482780532

相關文章
相關標籤/搜索