不僅是php,大部分程式語言的函式或者叫方法,都可以用return來定義方法的返回值。從函式這個叫法來看,本身它就是乙個計算操作,因此,計算總會有個結果,如果你在方法體中處理了結果,比如進行了持久化儲存,那麼這個函式就不用返回任何內容。而計算的結果是要給外部使用的,這時候就要將計算結果進行返回了。
return關鍵字
不用return或者直接return;都會返回null,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
function testd($a, $b)
var_dump(testd(1, 2)); // [3, 2]
返回值型別宣告關於返回值這一塊還是比較好理解的。下面才是重頭戲,在php7的新特性中,返回值宣告是非常亮眼的一道風景。
如上例所示,如果返回值不是bool型別,那麼將直接報typeerror的錯誤。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
那麼定義了返回值型別宣告有什麼好處呢?我們在php方法引數的那點事兒有介紹過型別宣告的好處,這裡就不過多贅述了,不管是引數型別宣告還是返回值型別宣告,都是一樣的。
同樣,陣列和類型別都是可以宣告定義的。不過除此之外,返回值宣告還可以定義void。它的作用其實就是宣告返回值為null,不能直接寫:null,而只能用:void來進行宣告。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的例項
這時,如果嘗試進行任何的return返回,都會直接報錯:fatal error: a void function must not return a value。function testj(): void
var_dump(testj());
總結我們可以看到,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...