php 程式設計進階

13
PHP 程程程程程程 程程程程Chap5

Upload: fayre

Post on 04-Jan-2016

86 views

Category:

Documents


1 download

DESCRIPTION

Chap5. PHP 程式設計進階. 授課講師:. 學習重點.  資料檔案的存取與網頁之間的傳遞  Cookie 與 Session  網址重新導向與網頁重新載入  網頁內容的快取控制  引入檔的應用  檔案的管理. PHP 的引入檔. 若有經常要重複執行的程式區塊、定義的變數或是自訂的函數,都可以寫成引入檔案(俗稱程式庫),供應給需要的網頁程式來呼叫取用。所以,引入檔案就像是個副程式或函數。 PHP 的引入檔並沒有特定的格式規範,只要利用 require 或 include 都可以直接將引入檔案讀取進來使用。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PHP 程式設計進階

PHP 程式設計進階

授課講師:

Chap5

Page 2: PHP 程式設計進階

學習重點

資料檔案的存取與網頁之間的傳遞 Cookie 與 Session

網址重新導向與網頁重新載入 網頁內容的快取控制 引入檔的應用 檔案的管理

Page 3: PHP 程式設計進階

PHP 的引入檔 若有經常要重複執行的程式區塊、定義的變數或是自

訂的函數,都可以寫成引入檔案(俗稱程式庫),供應給需要的網頁程式來呼叫取用。所以,引入檔案就像是個副程式或函數。

PHP 的引入檔並沒有特定的格式規範,只要利用 require 或 include 都可以直接將引入檔案讀取進來使用。

在 PHP 網頁程式設計中,提供有 require() 和 include() 可以用來將引入檔案導入主要的網頁程式裡。但使用上略有差異!

在 php.ini 檔案裡含有 include_path 參數可以用來設定引入檔案的預設路徑。如果要引入的檔案放置在不同的路徑裡,就必須在程式中描述清楚。

Page 4: PHP 程式設計進階

requird()

將引入檔讀入主要程式檔案內,整段引入檔案的內容是為主要程式的一部份。 require() 的語法為:

Page 5: PHP 程式設計進階

範例: 設計了一個名為「 discount.php 」,的引入檔案,在此

網頁程式中,建立了一個名為 discount 的自訂函數( function )可從已知的單價( $unit_price )、數量( $qty )、與折扣( $disc )等變數中,進行折扣後總價的計算與輸出。

Page 6: PHP 程式設計進階

名為「 0517.php 」的主要網頁程式檔案,提供了單價、數量、與折扣等三項資訊,然後,利用 require 函數將前述的引入檔( discount.php )讀入此主程式中,最後再進行 discount 函數的計算,其網頁程式內容與執行的結果如下:

Page 7: PHP 程式設計進階

include()

主程式裡使用 include() 來引入檔案時,一但主程式呼叫一次 include() ,就立即讀取一遍引入檔,若再次呼叫一次 include() ,便即刻再次讀取一遍引入檔。因此,若主程式裡呼叫了 n 次 include() ,則此 include() 所指示的引入檔就會被讀取 n 遍。

一般而言,在主要網頁程式裡若含有分歧控制或迴圈程式的設計,而且分歧與迴圈裡需要運用到引入檔時,就非常適合運用呼叫時才讀入引入檔的 include() 函數。

Page 8: PHP 程式設計進階

範例: 利用 include() ,設計攝氏轉換成華氏的計算。其

中,必須將攝氏的數字先乘以 9 再除以 5 ,最後再加上 32 。假設變數 $c 為攝氏溫度,則華氏溫度的計算公式應為 $c*9/5+32 。在此,我們建立一個名為 temperatureCtoF.php 的引入檔案,內含一個 echo 敘述與 return 敘述,其中 return 敘述可以傳回$c*9/5+32 的值,網頁程式如下所示:

Page 9: PHP 程式設計進階

再建立一個名為 0518.php 的主要網頁程式,在程式中設定變數 $c 為攝氏溫度,並設定此變數的數據為 32 ,然後,再設定變數 $f 為華氏溫度,並設定算為 include(“temperatureCtoF.php”) ,意為引入溫度轉換程式後讀取回傳值,最後以 echo 敘述輸出轉換後的華氏溫度,程式如下所示:

Page 10: PHP 程式設計進階

require() 與 include() 的其他差異性 不論 require() 所引入的檔案是否會被執行,此引入檔案讀內容一

定會被讀進來。如果您在撰寫程式的時候,希望真的要執行引入檔案時才讀取引入檔案,若沒有要引入檔案就不要讀取引入檔案,則 include() 才是您理想的選擇。

include() 提供有回傳值( return )的功能,但是 require() 函數並不容許有回傳值。

若引入檔的程式中有誤,譬如,甚至整個引入檔的儲存位置錯誤或根本就不存在,則若使用 require() 函數來進行引入檔案的引入時,會直接停止程式的執行;若使用的是 include() 函數來進行引入檔案的引入時,會先產生警告訊息並忽略錯誤而繼續執行後續的程式。若不希望顯示錯誤的訊息,則可以將 php.ini 檔案裡的 display_errors=On 的參數設定改成 display_errors=Off 。

Page 11: PHP 程式設計進階

include_once() 與 require_once() 除了 require() 與 include() 函數外, PHP 還提

供有 require_once() 與 include_once() 這兩個雷同的引入檔函數,可以防止進行重複引入檔案時,造成多次重覆讀取而使得常數或自訂函數重複定義的情形。

若不希望每次迴路的執行造成重複引入檔案時發生了重複定義常數或函數的衝突,則可以將原本的 require() 含數改成 require_once() ,或者 include() 函數改成 include_once() ,讓引入的檔案無論如何都只被引入一次而已。

Page 12: PHP 程式設計進階

第一次迴路時藉由 require(“discount.php”)函數引入折扣運算檔案後,可以順利的進行 discount 這個自訂函數的運算,可是,第二次迴路時若再利用 require(“discount.php”)函數進行引入檔案時,將發生無法重新宣告 discount() 這個自訂函數的錯誤。整個在利用瀏覽程式時,將出現錯誤顯示。

Page 13: PHP 程式設計進階

上述程式裡的 require(“discount.php”) 函數改寫成 require_once“discount.php”() 函數,則即可避免上述的錯誤發生。