PHP Function用法是相同結構程式封裝起來,做成輸入到輸出的函數工具,方便重複使用,可以提升專案效率,本文介紹有2個參數的語法,補充預設值如何設定。
目錄
Toggle一、小寫與大寫差異
PHP自定義函數的時候,除了使用小寫的「global $F」,也可以是大寫的「GLOBALS」,大寫用法是中括號裡面加一個全域變數的名稱:「$GLOBALS[‘X’]」。從執行結果可知不管是小寫或者大寫,作用都是在自訂函數中引用全域變數的值,如此對於PHP是什麼應該有進一步的認識。

二、GLOBALS用法
為了更加瞭解GLOBALS用法,設計一個F變數等於X變數的函數,執行的時候先引用這一個函數進行變數轉換,接著再計算變數,F乘以變數X,計算結果是900。從這個簡單範例可以知道GLOBALS作用不但是在函數裡面可以設定區域變數的值,它還可以去更改在函數外面的全域變數的值。所以這裡的函數已經將全域變數F的值更改為和X變數值相同,兩者都是30,因此計算30×30得到900。

三、變數設定測試
接下來,在上個步驟的匯率換算函數裡面新增一個語句,利用GLOBALS將全域變數F設定為200,右側預覽結果的換算金額是6000,符合上個步驟對於相同結構PHP程式碼的瞭解。

四、函數參數作用
先前的自定義函數在名稱後面都是直接加上空白的小括號,表示沒有參數的意思,屬於PHP入門的基本用法。如果在裡面加上一個參數,例如這裡看到的「$原幣金額」,並且再利用GLOBALS將全域變數F設定為原幣金額。在引用函數的時候,參數值設定為是200:「匯率換算(200)」,從執行結果得知,它會以這個函數的參數值200去更改全域變數F的值,當然就會影響到換算金額,於是右側預覽結果中,「原幣金額:200」,「換算金額:6000」。

五、實際專案設計
上個步驟是單純使用函數作為變數值的設定,然後再另外執行PHP語句,這種結構主要是作為文章教學的案例分享,通常在程式設計時其實是反過來,搭配函數參數取得變數值之後,直接在函數內部執行程序,包括PHP echo列印全部一次搞定,這才是正宗函數用法。
例如在此的匯率換算函數有「原幣金額」跟「美金匯率」兩個參數,函數內部,依照所取得的參數值,進行和上個步驟相同的網頁呈現,換算金額計算並顯示結果。

六、參數預設值用法
熟悉函數參數之後,接下來介紹參數預設值的概念。例如這裡的匯率換算函數和上個步驟同樣有原幣金額和美金匯率兩個參數,不過在美金匯率的後面加了等於30:「$美金匯率=30」,然後進行三項測試,方便瞭解其作用。
第一項測試:引用函數同時給予100和30兩個參數值,計算結果和上個步驟相同。
第二項測試:引用函數時只給予一個參數值100,雖然沒有第2個參數值,不過在函數設計結構中已經預設第2個參數值是30,因此在省略第2個函數參數的情況下,程式自動帶入30,這便是函數參數預設值的用法。
第三項測試:沒有提供第2個參數會使用預設值,反過來說,有提供第2個參數值,例如在截圖最下面的28,這個時候執行函數就會以所給予的參數值28去執行,而不是預設值30。第三項其實結構和第一項相同,只是多一道驗證對於HTML PHP網頁設計會更加清楚。

七、return與echo
上個步驟是直接在函數裡面計算並且使用計算之後的結果,實務中通常函數是單純用於參數值設定與計算,計算之後的結果則是在另外的地方做適當的呈現,如同Excel插入函數計算之後呈現在儲存格上面,這就是函數傳回值的概念。
例如這裡得到換算金額之後,使用Return語句將換算金額作為函數的傳回值,再以Echo語句列印在網頁上呈現,通常實際在設計專案時是如此使用函數功能。一方面,可以簡化程式碼,因為同一個函數可以在不同地方引用,毋須再重覆編寫程式,另一方面,由於程式碼簡化,其實也能讓整個專案的程式架構更加清楚。

八、PHP Function用法
最後補充可能會遇到的狀況,它就跟PHP字串處理一樣基本且重要。如同這裡截圖註解,在整個程式專案的架構中,變數宣告是不能隨意往下移,也就是一定是先宣再引用,但是函數卻是移到下方的位置,程式執行時會先快速瀏覽過整份代碼文件,把函數部份先提取出來,類似於當作輔助工具,然後在實際執行程式的時候,有需要時再把函數拿出來套用,這是PHP Function正式用法,有點像是預先定義好的Excel函數一樣。
當程式專案越來越大,代碼越來越多,記得變數與函數的結構原則,不會出錯而且能加以運用。

簡單設定不同變數名稱
這篇文章特別利用範例簡單介紹PHP GLOBALS,如何在函數裡面引用並且改變全域變數的值,雖然可以更加具體瞭解相關用法,但在實務中為了避免混淆,其實可以單純為全域變數和區域變數設定不同名稱即可,跟PHP取餘數同樣有許多不同作法。當然也不排除在特殊場合一定要使用相同名稱,這個時候也許就會用到這篇文章所介紹的方法,個人心得提供讀者參考。
本文章講解影片:

贊贊小屋程式設計自學:
Linux教學、Apache教學、Python教學、HTML自學入門、PHP是什麼?、手機App製作教學、Synology NAS教學。
