iT邦幫忙

0

php 中function 旁邊冒號的用法

公司專案上面看到不太理解的function用法,想請問這是什麼意思。
以下是問題範例程式:

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

根據官方說明
http://php.net/manual/en/functions.returning-values.php

public function A(a) : B{
    return a;
}
var_dump(A(1));

上面回傳的值會是 B(A(1));

但用在class又是怎麼一回事呢?
它跟下面程式差在哪裡?

public function A(){
    return new B();
}
就一個要求回傳型態罷了。
在php5之前,沒辦法定義回傳型態時根本不知道函式是要回傳什麼鬼。
tsunejui iT邦新手 5 級 ‧ 2018-09-28 11:45:03 檢舉
感謝回答 聽完您的說明大概了解了 他是要強制定義回傳的一定是要那個Class沒錯

1 個回答

1
浩瀚星空
iT邦高手 1 級 ‧ 2018-09-28 11:22:23
最佳解答

這樣的用法倒是沒用過。查了一下php官方的說明,似乎是與宣告變數類型運做有關係。
依照你專案的寫法,是得要回傳一個物件才行。

這因該是將原本php弱型態語言的寫法,直接強制變數應用的宣告寫法。
如宣告int的話

function sum($a, $b): int {
    return $a + $b;
}

則其傳入的值一定得要是int值。
如 sum(1,2)

但如果用 sum(1, 2.5) 則會報錯誤

tsunejui iT邦新手 5 級 ‧ 2018-09-28 11:46:08 檢舉

感謝回答 聽完上面的討論留言大致了解 設計者是要強制定義
回傳的一定是要那個Class

我要發表回答

立即登入回答