PHP方法的返回值

2021-10-07 23:04:21 字數 1780 閱讀 9516

不僅是php,大部分程式語言的函式或者叫方法,都可以用return來定義方法的返回值。從函式這個叫法來看,本身它就是乙個計算操作,因此,計算總會有個結果,如果你在方法體中處理了結果,比如進行了持久化儲存,那麼這個函式就不用返回任何內容。而計算的結果是要給外部使用的,這時候就要將計算結果進行返回了。

return關鍵字

function testa($a, $b)

var_dump(testa(1, 2)); // null

function testb($a, $b)

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

function testc($a, $b)

var_dump(testc(1, 2)); // null

不用return或者直接return;都會返回null,return會阻斷方法體中後續**的執行。如果要返回多個值,只能使用陣列組裝資料。

function testd($a, $b)

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

返回值型別宣告

關於返回值這一塊還是比較好理解的。下面才是重頭戲,在php7的新特性中,返回值宣告是非常亮眼的一道風景。

function teste($a, $b) : bool

else

}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

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

inte***ce ia

class a implements ia

{}class b extends a

function testg(): a

function testh(): b

function testi(): ia

var_dump(testg()); // b的例項

var_dump(testh()); // b的例項

var_dump(testi()); // b的例項

同樣,陣列和類型別都是可以宣告定義的。不過除此之外,返回值宣告還可以定義void。它的作用其實就是宣告返回值為null,不能直接寫:null,而只能用:void來進行宣告。

function testj(): void

var_dump(testj());

這時,如果嘗試進行任何的return返回,都會直接報錯:fatal error: a void function must not return a value。

總結

我們可以看到,php在不斷的發展中一直在吸取其他語言中的優秀特性。很明顯,新增這些型別宣告的目的就是為了將來的編譯器做準備的。這也是php8的乙個重要特性,讓我們拭目以待吧!

測試**:

Controller方法返回值

controller方法中定義modelandview物件並返回,物件中可新增model資料 指定view。入門程式 第一 包類 類包 方法名 public modelandview itemlist 參考 在controller方法形參上可以定義request和response,使用request...

insert方法的返回值

今天碰到乙個問題,就是關於ibatis的insert方法的返回值的問題。在網上找了很多例子,自己也親自試了一下。所用的 其xml中的配置如下 select seq u role.nextval as id from dual insert into u role role id,name,type,...

spring注入方法返回值

通過methodinvokingfactorybean工廠bean,可將目標方法的返回值注入為bean的屬性值。這個工廠bean用來獲取指定 方法的返回值,該方法既可以是靜態方法,也可以是例項方法 這個值既可以被注入到指定bean例項的指定屬性,也可以直接定義成bean例項 public class...