PHP - 數值類型聲明
你好,有抱負的程式設計師們!今天,我們將踏上一段令人興奮的旅程,進入PHP的領域,特別聚焦於數值類型聲明。別擔心,如果這些詞語現在對你來說像是外星語言——到了這個教學的結尾,你將會像一個有經驗的開發者一樣,輕鬆使用這些術語!
數值類型聲明是什麼?
在我們深入之前,讓我們先解釋一下“數值類型聲明”到底意味著什麼。在程式設計中,“數值”是指單一值,比如數字或文本字符串。而“類型聲明”是一種花哨的說法,我們告訴PHP我們期望一個函數接收或返回什麼類型的數據。
想像你正在經營一個檸檬水攤。當你請求檸檬時,你不會希望有人給你一個籃球,對吧?類型聲明的作用基本上就是這樣——確保你的代碼得到正確類型的數據來工作。
PHP 7中的數值類型聲明
PHP 7引入了一個遊戲規則改變者:為函數參數和返回值聲明數值類型的能力。這是一件大事,因為它幫助及早發現錯誤,並使代碼更可靠。
讓我們看一個簡單的例子:
function addNumbers(int $a, int $b): int {
return $a + $b;
}
echo addNumbers(5, 10); // 輸出:15
在這段代碼中:
-
int $a, int $b
:我們在說明$a
和$b
都應該是整數。 -
: int
:函數之後的部分聲明該函數將返回一個整數。
現在,讓我們試試一些壞事:
echo addNumbers("5", "10");
意外!這仍然可以工作並輸出15。但是為什麼呢?歡迎來到……
强制模式
默認情況下,PHP 7運行在所謂的“強制模式”下。這就像有一個非常理解你的朋友,即使你表達得不是很清楚,他也會試圖理解你的意思。
在強制模式下,PHP會試圖將值轉換(或“強制”)為聲明的類型,如果可能的话。所以當我們傳遞字符串"5"和"10"時,PHP會認為,“我明白你要做什麼”,並將它們轉換為整數。
以下是一些常見的強制轉換表:
輸入 | 聲明類型 | 結果 |
---|---|---|
"42" | int | 42 |
"3.14" | float | 3.14 |
1 | string | "1" |
true | int | 1 |
但如果我們想要PHP更嚴格怎麼辦?那就來看看……
嚴格模式
嚴格模式就像有一個堅持精確答案的老師。要啟用嚴格模式,在PHP文件的頂部添加這行代碼:
declare(strict_types=1);
現在,讓我們再試一次我們的壞例子:
declare(strict_types=1);
function addNumbers(int $a, int $b): int {
return $a + $b;
}
echo addNumbers("5", "10");
砰!這將會抛出一個TypeError
。PHP在說,“我要求整數,你給了我字符串。我對此很不開心。”
為什麼使用數值類型聲明?
-
更清晰的代碼:這就像給未來的你(或其他開發者)留下一張便條。“嘿,這個函數期望數字!”
-
及早發現錯誤:而不是得到奇怪的結果,你會得到直接指向問題的錯誤。
-
更好的性能:當PHP知道確切的類型時,它可以更好地優化代碼。
真實世界的例子
假設你正在構建一個簡單的計算器應用。以下是如何使用數值類型聲明:
declare(strict_types=1);
class Calculator {
public function add(float $a, float $b): float {
return $a + $b;
}
public function subtract(float $a, float $b): float {
return $a - $b;
}
public function multiply(float $a, float $b): float {
return $a * $b;
}
public function divide(float $a, float $b): float {
if ($b == 0) {
throw new Exception("不能除以零!");
}
return $a / $b;
}
}
$calc = new Calculator();
echo $calc->add(5.5, 4.5); // 輸出:10
echo $calc->subtract(10, 3); // 輸出:7
echo $calc->multiply(3, 4); // 輸出:12
echo $calc->divide(10, 2); // 輸出:5
// 這將在嚴格模式下抛出錯誤
// echo $calc->add("5", "10");
在這個例子中,我們創建了一個Calculator
類,其所有方法都使用浮點數類型聲明。這確保了我們所有的計算都是在數字上進行的,防止了任何意外的字符串連接或其他類型相關的失誤。
結論
PHP中的數值類型聲明就像山路上的護欄。它們幫助你的代碼保持在正確的軌道上,並使發現問題變得更容易。雖然它們起初可能看起來有些麻煩,但相信我——未來的你會為這種清晰度和安全性感到感激。
記住,編程是關於清晰的溝通——不僅僅與計算機,還有其他開發者(包括未來的你!)。類型聲明是你工具箱中的另一個工具,用於编写更清晰、更安全、更高效的代碼。
現在去聲明那些類型吧!你的代碼會感謝你,你的開發者夥伴也會這樣。快樂編程!
Credits: Image by storyset