「基礎編程學習」 「PHP7數組詳解」:第1章 (7)函數及異常處理
- 2020 年 4 月 8 日
- 筆記
# 1.12 函數
之前在輸出學生程式,用作文本渲染的時候,我們使用了check_score($score)這樣的函數,用於封裝功能。
大家應該有個初步的認識。函數,是一個運算過程,封裝起來,多處調用。可以有效地使程式簡潔起來,更富於可讀性。
還是用實例讓大家有個深入的了解。

function關鍵詞聲明,後面是函數的標識符get_bonus_goods,然後是形參$type_id。函數體內部,執行需要的運算。
然後,函數可以有返回值,也可以沒有。上述例子,就有返回值,$row。根據頂部注釋可以看到,返回的數組。如果是空,那就是[],如果有數據,那就是array結構。
再來看一個例子。

Laravel的helper函數。簡單封裝一下,調用reset返回數組的第一個值。因為reset名字不好記,使用head倒是直觀許多。

判斷是否windows平台。
大家看優秀的框架設計,有許多我們值得借鑒的地方。函數,要做最小化封裝。功能盡量單一,可拆卸,靈活小巧。
盡量不要寫一大堆程式碼,一大堆功能,嚴重依賴,一處用過,沒有它用。那樣的函數,不過是一堆程式碼,換個放的地方而已。
# 1.13 異常處理 try…catch…結構
程式運行中,對於出現的異常情況,應盡量捕捉,且能夠有相應的處理流程,避免程式意外的發生。

如上述的程式,使用catch語句捕捉三種異常情況,一個是 zeroExecption,一個是 Execption,一個是 Error。單個對象在錯誤發生的時候被拋出。
當然我們也可以手動拋出一個異常用於顯式終端程式。
throw new Execption('Have an error here');
我們再看一些具體的實例。


看上述例子,catch內捕捉到的異常,基本不做處理,而是讓程式隱藏異常資訊,繼續往下進行。需要的地方顯式 throw即可。

上面這個例子,是需要手動處理的異常,直接處理就是。
看框架,讀程式碼,不如動手寫一寫,馬上去實踐吧。