不僅是PHP,大部分編程語言的函式或者叫方法,都可以用return來定義方法的回傳值,從函式這個叫法來看,本身它就是一個計算操作,因此,計算總會有個結果,如果你在方法體中處理了結果,比如進行了持久化保存,那么這個函式就不用回傳任何內容,而計算的結果是要給外部使用的,這時候就要將計算結果進行回傳了,
return關鍵字
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會阻斷方法體中后續代碼的執行,如果要回傳多個值,只能使用陣列組裝資料,
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251395.html
標籤:PHP
上一篇:PHP方法引數的那點事兒
下一篇:萌新入門之python基礎語法
