PHP 程式不求人-物件導向程式
資訊界的大神都說,物件導向程式設計是一種態度(筆者只是大神追隨者)。那我們就保持良好的態度,來用物件這方法,讓我們可以把源碼重複使用,並維持良好態度,讓我們可以從編源人也可以變成擊敗人。
在PHP中,物件為一種自定義的資料型別,不同於程式預設之整數,浮點數,字串,布林值,陣列等等。但要使用物件,在PHP內需先產生物件類別。類別具有自己成員與自己的函式方法。類別宣告之保留字為class,如下圖一使用物件方法來顯示HTML頁面,用網頁瀏覽會顯示如圖二:
(圖一)
圖一為撰寫PHP程式碼前,需要一個前綴標籤,讓PHP直譯器知道以下語法使用(PHP翻譯機) ,從<?php 起頭,到 ?> 結尾,如果 php.ini設定檔有開啟 short_tag on 參數,則起頭只要<? 即可。利用瀏覽器存取網頁伺服器,(如Apche)會再轉給CGI程式,然後再輸出靜態HTML網頁或是JAVASCRIPT的流程,我們將要顯示的畫面寫在PHP類別所要使用的方法(函式)上。
圖一下圖第2行開始,進入程式主體,首先用 class 宣告一個類別,類別名稱為 mysite,內容以大括號 { } 包裹。第三行為類別有幾個成員變數,主要可拿來變換方法之內容文字,在此範例為改變網頁的title 標籤文字,宣告為public公開變數,在類別外也可以存取或呼叫,若宣告為private,則僅有該類別內部方法可存取該成員變數。接著利用 function 來宣告類別可以使用的功能,此例為顯示首頁,名稱自取為showportal(),內容一樣以大括號 { } ,為了排版好看,可以將縮排推幾個字元,或用Tab鍵推縮。
第6行利用指令 echo ' '; 包裹HTML標籤,HTML標籤功能就不再贅述,可從w3c school去了解更多進階程式( https://www.w3schools.com/html/default.asp ),以利可顯示在瀏覽器上,$this是一個保留變數,可用以存取該類別的成員數值使用。PHP在指令或函數呼叫或使用完後,記得加上 ; 來斷句。
第23至25行,我們開始要使用準備好的 mysite 類別,所以先利用new 建構出類別並指定一變數 $mysite 為類別的代稱。第25行則可利用類別 $mysite -> title 來存取到類別成員變數
title,並指定其值為字串 Welcome Whole New World !。第25行則利用類別 $mysite ->showportal() 呼叫showportal的方法,讓印出的HTML內之<title></title>包裹的值隨$mysite->title來變化,亦隨顯示出整個HTML,如圖二上,圖二下為HTML原始碼
實作上,通常會把類別與主要顯示程式分開,獨立出一類別函式庫程式。
(圖二)
再來我們利用 static 的靜態型態保留字,讓類別內的方法,變成可以被外部直接利用,而不用在宣告新物件才能使用,並在一起始就保留static變數所使用之記憶體區塊來讓大家共用。如圖三,爲一求圓面積之PHP程式我們將變數 $radius 設定成私有,僅能在circle類別內操作。第5行先宣告有一建構子,數值變數為$r,值可從外部給予。在PHP內,可利用雙底線 __construct 與 __destruct來建構自動使用記憶體與釋放記憶體的建構變數,當類別不使用時,就可以釋放記憶體以活化程式所需之記憶體。
(圖三)
接著我們利用PHP GD Library(https://libgd.github.io/) 來展現物件導向程式的應用。
未完待續
在PHP中,物件為一種自定義的資料型別,不同於程式預設之整數,浮點數,字串,布林值,陣列等等。但要使用物件,在PHP內需先產生物件類別。類別具有自己成員與自己的函式方法。類別宣告之保留字為class,如下圖一使用物件方法來顯示HTML頁面,用網頁瀏覽會顯示如圖二:
(圖一)
圖一為撰寫PHP程式碼前,需要一個前綴標籤,讓PHP直譯器知道以下語法使用(PHP
圖一下圖第2行開始,進入程式主體,首先用 class 宣告一個類別,類別名稱為 mysite,內容以大括號 { } 包裹。第三行為類別有幾個成員變數,主要可拿來變換方法之內容文字,在此範例為改變網頁的title 標籤文字,宣告為public公開變數,在類別外也可以存取或呼叫,若宣告為private,則僅有該類別內部方法可存取該成員變數。接著利用 function 來宣告類別可以使用的功能,此例為顯示首頁,名稱自取為showportal(),內容一樣以大括號 { } ,為了排版好看,可以將縮排推幾個字元,或用Tab鍵推縮。
第6行利用指令 echo ' '; 包裹HTML標籤,HTML標籤功能就不再贅述,可從w3c school去了解更多進階程式( https://www.w3schools.com/html/default.asp ),以利可顯示在瀏覽器上,$this是一個保留變數,可用以存取該類別的成員數值使用。PHP在指令或函數呼叫或使用完後,記得加上 ; 來斷句。
第23至25行,我們開始要使用準備好的 mysite 類別,所以先利用new 建構出類別並指定一變數 $mysite 為類別的代稱。第25行則可利用類別 $mysite -> title 來存取到類別成員變數
title,並指定其值為字串 Welcome Whole New World !。第25行則利用類別 $mysite ->showportal() 呼叫showportal的方法,讓印出的HTML內之<title></title>包裹的值隨$mysite->title來變化,亦隨顯示出整個HTML,如圖二上,圖二下為HTML原始碼
實作上,通常會把類別與主要顯示程式分開,獨立出一類別函式庫程式。
(圖二)
再來我們利用 static 的靜態型態保留字,讓類別內的方法,變成可以被外部直接利用,而不用在宣告新物件才能使用,並在一起始就保留static變數所使用之記憶體區塊來讓大家共用。如圖三,爲一求圓面積之PHP程式我們將變數 $radius 設定成私有,僅能在circle類別內操作。第5行先宣告有一建構子,數值變數為$r,值可從外部給予。在PHP內,可利用雙底線 __construct 與 __destruct來建構自動使用記憶體與釋放記憶體的建構變數,當類別不使用時,就可以釋放記憶體以活化程式所需之記憶體。
(圖三)
接著我們利用PHP GD Library(https://libgd.github.io/) 來展現物件導向程式的應用。
未完待續
留言
張貼留言