專業鋁門窗、鍛造門設計及安裝
價格便宜、品質好、設計佳,值得您信賴
抓漏油漆工程承包,居家油漆粉刷、外牆油漆
油漆老師傅專業施工,來電免費估價!

首頁  ‧  maids 論壇 ‧ 程式設計討論     ‧ 

[教學]PHP 中的類class

房東:星爺
發表時間:2007-01-19



PHP 中的類(class)-什麼叫類(class)?


在闡述類的概念之前我們來先說說面向物件編程的概念:面向物件的程式設計(Object-Oriented Programming,簡記為OOP)立意於創建軟體重用代碼,具備更好地類比現實世界環境的能力,這使它被公認為是自上而下編程的優勝者。它通過給程式中加入擴展語句,把函數"封裝"進編程所必需的"物件"中。面向物件的編程語言使得複雜的工作條理清晰、編寫容易。說它是一場革命,不是對物件本身而言,而是對它們處理工作的能力而言。物件並不與傳統程式設計和編程方法相容,只是部分面向物件反而會使情形更糟。除非整個開發環境都是面向物件的,否則物件產生的好處還沒有帶來的麻煩多。有人可能會說PHP不是一個真正的面向物件編程的語言, PHP 是一個混合型 語言,你可以使用面向物件編程,也可以使用傳統的過程化編程。然而,對於大型專案的開發,你可能想需要在PHP中使用純的面向物件編程去聲明類,而且在你的專案開發只用物件和類。隨著專案越來越大,使用面向物件編程可能會有幫助,面向物件編程代碼很容易維護,容易理解和重復使用,這些就是軟體工程的基礎。在基於Web的專案中應用這些概念就成為將來網站成左漲]素。

  物件(Object)是問題域或實現域中某些事物的一個抽象,它反映此事物在系統中需要保存的資訊和發揮的作用;它是一組屬性和有權對這些屬性進行操作的一組服務的封裝體。 關於物件要從兩方面理解:一方面指系統所要處理的現實世界中的物件;另一方面物件是電腦不直接處理的物件,而是處理相應的電腦表示,這種電腦表示也稱為物件。簡單的來說,一個人就是一個物件,一個尺子也可以說是個物件。當這些物件可以用資料直接表示時,我們就稱他為屬性,尺子的度量單位可以是釐米,公尺或英尺,這個度量單位就是尺子的屬性。
  
  在PHP裏我們可以定義一個類,類(Class)就是指變數與一些使用這些變數的函數的集合。PHP是一種鬆散類型的語言,所以通過類型重載不起作用,通過參數的個數不同來重載也不起作用。 有時在面向中重載構造函數非常好,這樣你可以通過不同的方法創建物件(傳遞不同數量的參數)。在PHP中就是通過類來實現的。

在PHP中是通過類來完成資訊封裝的,在PHP中定義類的語法是:


CODE:
class Class_name // 在面向物件編程類中,習慣上類的第一個字元為大寫,並且必須符合變數的命名規則。
{

//函數與變數的集合

}
?>

  在定義類時你可以按自已的喜好的格式進行定義,但最好能保持一種標準,這樣開發起來會更有效些。

  資料成員在類中使用"var"聲明來定義,在給資料成員賦值之前,它們是沒有類型的。一個資料成員可以是一個整數,一個陣列,一個相關陣列(Associative Array)或者是一個物件。

下面是一個類定義的實際例子:


CODE:
class Student
{
var $str_Name; //姓名
var $str_Sex; //性別
var $int_Id; //學號
var $int_English; //英語成績
var $int_maths; //數學成績
}
?>

  這是一個很普通定義類的簡單例子,用於顯示學生的學習成績,類名為Student,Student類包涵了一個學生的基本屬性:姓名、性別、學號、英語成績和數學成績。
  
  function我們稱之為在類中被定義的函數,在函數中訪問類成員變數時,你應該使用$this->var_name,其中var_name指的是類中被聲明的變數,否則對一個函數來說,它只能是局部變數。 我們先定義一個Input()的函數,用來給實例中的物件賦以初值:


CODE:
function Input ( $Name, $Sex, $Id, $Englis, $Maths)
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id;
$this->int_Englis=$English;
$this->int_Maths=$Maths;
}

現在我們再定義一個叫"ShowInfo()"的函數,用於列印學生的基本情況:


CODE:
function ShowInfo() //定義ShowInfo()函數
{
echo ("姓名:$this->str_Name

");
echo ("性別:$this->str_Sex

");
echo ("學號:$this->int_Id

");
echo ("英語成績:$this->int_English

");
echo ("數學成績:$this->int_Maths

");
}

而定義好的類則必須使用new關鍵字來生成物件:


CODE:
$A_student=new Student;

例如我們要為一個名為$Wing的物件創建實例,並進行賦值,可以使用下面的代碼:


CODE:
$Wing =new Student; //用new關鍵字來生成物件
$Wing ->Input ("Wing","男",33,95,87);
//分別輸入Wing的姓名、性別、學號、英語成績、數學成績,其中姓名和性別是字元型變數,所以需要用雙引號,其他為數值型變數則不需要。

通過下面這段完整的源代碼,我們就可以很清楚的看到類在PHP是怎麼被運用的:


CODE:
class Student
{
var $str_Name;
var $str_Sex;
var $int_Id;
var $int_English;
var $int_maths;

function Input ( $Name, $Sex, $Id, $English, $Maths)
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id;
$this->int_English=$English;
$this->int_Maths=$Maths;
}
function ShowInfo()
{
echo ("姓名:$this->str_Name

");
echo ("性別:$this->str_Sex

");
echo ("學號:$this->int_Id

");
echo ("英語成績:$this->int_English

");
echo ("數學成績:$this->int_Maths

");
}
}


$Wing = new Student;
$Wing->Input ("Wing","男",33,95,87);
$Paladin = new Student;
$Paladin->Input ("paladin","女",38,58,59.5);

$Wing->ShowInfo();
$Paladin->ShowInfo();

?>

執行結果應是這樣的:
姓名:Wing
性別:男
學號:33
英語成績:95
數學成績:87
姓名:Paladin
性別:女
學號:38
英語成績:58
數學成績:59.5

  PHP現有的版本較以前的版本在對面向物件編程的支援方面有了很大的改善,但支援的還不是很完整,不過現階段PHP對面向物件編程語言提供的支援不但有利於我們設計程式的結構,對於對程式的維護也能提供很大的幫助。
;)



  • 贊助網站       

    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務
    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!



  •  共 0 人回應

    姓名:
    佈告內容: