[PHP]程式碼分割&引入

有時候為了程式精簡化會把重複的程式,或是過於冗長的自訂函數獨立出來寫成一隻檔案
又或是寫出一個「唉喲!不錯喔」的東西可以重複利用
不想要每次都重寫的時候也可以把它獨立出來


這邊要介紹的是require() 和include()
require()

以前在做前端的時候,每當遇到版頭或是版尾跑掉,但是檔案內卻找不到內容
那內容在哪裡呢?那時候也沒有人告訴我
自己一層一層拆開就會看到一個require()裡面填入一隻檔案
找到那隻傳說中的檔案一看就是消失的內容

所以require()通常放靜態的內容 ,像是網頁固定的內容(版權宣告、標頭等等)
或是一些變數,或是公式等程式內容不依其他程式碼而變動的內容
如果require()一隻檔案,則在require()後可以直接使用裡面的變數
include()

適合用來引入動態的程式碼,程式內容會依其他程式碼而變動
多數時候把常用的function放在裡面
同時,若是引入的內容是放在條件判斷式內部,則一定要使用include()來呼叫
require_once()

include_once()

以上兩個和原本的使用時機相同,唯一的差別在於這兩個會先檢查
引入的檔案是不是已經在該程式中的其他地方被引入過了?
如果有的話,就不會再次重複引入該檔案
因為PHP 不允許相同名稱的函數被重複宣告
若是呼叫了一隻程式內部,呼叫了另一隻程式內含一個變數$name
我在呼叫下方又呼叫了那隻有變數$name的程式,則會出現錯誤訊息。

一個分割檔案的小練習
1.利用一維陣列儲存使用帳號
2.利用二維陣列儲存使用者密碼與email
3.寫一個HTML表單可以輸入使用者帳號與密碼,當帳號密碼比對正確時就秀出該使用者的 email address

HINT:檔案結構應該如下
login.html - 查詢輸入
login.php -主程式
verify.php -驗證帳號密碼的function
user.php - 存使用者資料的一維陣列和二維陣列

解答同樣放在github上面,都是以前教過的功能做延伸
只是把原本寫在主程式裡面的會員資料獨立出來,然後require到驗證程式裡
當要判斷使用者資料的時候另外include驗證程式進來執行
如此主程式可以維持整潔,而且後續維護也較為方便

留言