130 likes | 323 Views
Chap5. PHP 程式設計進階. 授課講師:. 學習重點. 資料檔案的存取與網頁之間的傳遞 Cookie 與 Session 網址重新導向與網頁重新載入 網頁內容的快取控制 引入檔的應用 檔案的管理. PHP 的引入檔. 若有經常要重複執行的程式區塊、定義的變數或是自訂的函數,都可以寫成引入檔案(俗稱程式庫),供應給需要的網頁程式來呼叫取用。所以,引入檔案就像是個副程式或函數。 PHP 的引入檔並沒有特定的格式規範,只要利用 require 或 include 都可以直接將引入檔案讀取進來使用。
E N D
Chap5 PHP程式設計進階 授課講師:
學習重點 資料檔案的存取與網頁之間的傳遞 Cookie與Session 網址重新導向與網頁重新載入 網頁內容的快取控制 引入檔的應用 檔案的管理
PHP的引入檔 • 若有經常要重複執行的程式區塊、定義的變數或是自訂的函數,都可以寫成引入檔案(俗稱程式庫),供應給需要的網頁程式來呼叫取用。所以,引入檔案就像是個副程式或函數。 • PHP的引入檔並沒有特定的格式規範,只要利用require或include都可以直接將引入檔案讀取進來使用。 • 在PHP網頁程式設計中,提供有require()和include()可以用來將引入檔案導入主要的網頁程式裡。但使用上略有差異! • 在php.ini檔案裡含有include_path參數可以用來設定引入檔案的預設路徑。如果要引入的檔案放置在不同的路徑裡,就必須在程式中描述清楚。
requird() • 將引入檔讀入主要程式檔案內,整段引入檔案的內容是為主要程式的一部份。require()的語法為:
範例: 設計了一個名為「discount.php」,的引入檔案,在此網頁程式中,建立了一個名為discount的自訂函數(function)可從已知的單價($unit_price)、數量($qty)、與折扣($disc)等變數中,進行折扣後總價的計算與輸出。
include() • 主程式裡使用include()來引入檔案時,一但主程式呼叫一次include(),就立即讀取一遍引入檔,若再次呼叫一次include(),便即刻再次讀取一遍引入檔。因此,若主程式裡呼叫了n次include(),則此include()所指示的引入檔就會被讀取n遍。 • 一般而言,在主要網頁程式裡若含有分歧控制或迴圈程式的設計,而且分歧與迴圈裡需要運用到引入檔時,就非常適合運用呼叫時才讀入引入檔的include()函數。
範例: 利用include(),設計攝氏轉換成華氏的計算。其中,必須將攝氏的數字先乘以9再除以5,最後再加上32。假設變數$c為攝氏溫度,則華氏溫度的計算公式應為$c*9/5+32。在此,我們建立一個名為temperatureCtoF.php的引入檔案,內含一個echo敘述與return敘述,其中return敘述可以傳回$c*9/5+32的值,網頁程式如下所示:
require()與include()的其他差異性 • 不論require()所引入的檔案是否會被執行,此引入檔案讀內容一定會被讀進來。如果您在撰寫程式的時候,希望真的要執行引入檔案時才讀取引入檔案,若沒有要引入檔案就不要讀取引入檔案,則include()才是您理想的選擇。 • include()提供有回傳值(return)的功能,但是require()函數並不容許有回傳值。 • 若引入檔的程式中有誤,譬如,甚至整個引入檔的儲存位置錯誤或根本就不存在,則若使用require()函數來進行引入檔案的引入時,會直接停止程式的執行;若使用的是include()函數來進行引入檔案的引入時,會先產生警告訊息並忽略錯誤而繼續執行後續的程式。若不希望顯示錯誤的訊息,則可以將php.ini檔案裡的display_errors=On的參數設定改成display_errors=Off。
include_once()與require_once() • 除了require()與include()函數外,PHP還提供有require_once()與include_once()這兩個雷同的引入檔函數,可以防止進行重複引入檔案時,造成多次重覆讀取而使得常數或自訂函數重複定義的情形。 • 若不希望每次迴路的執行造成重複引入檔案時發生了重複定義常數或函數的衝突,則可以將原本的require()含數改成require_once(),或者include()函數改成include_once(),讓引入的檔案無論如何都只被引入一次而已。
上述程式裡的require(“discount.php”)函數改寫成require_once“discount.php”()函數,則即可避免上述的錯誤發生。