PHP 中的類別
在闡述類別的概念之前我們來先說說物件導向程式設計的概念:物件導向的程式設計(Object-Oriented Programming,簡記為OOP)立意於創建軟體重用程式碼,具備更好地模擬現實世界環境的能力,這使它被公認為是自上而下編程的優勝者。它透過在程式中加入擴充語句,把函數「封裝」進程式所必需的「物件」。物件導向的程式語言使得複雜的工作條理清晰、編寫容易。說它是一場革命,不是對物件本身而言,而是對它們處理工作的能力而言。物件並非與傳統程式設計和程式設計方法相容,只是部分面向對象反而會使情況更糟。除非整個開發環境都是物件導向的,否則物件產生的好處還沒有帶來的麻煩多。有人可能會說PHP不是一個真正的物件導向程式設計的語言, PHP 是一個混合型 語言,你可以使用物件導向編程,也可以使用傳統的過程化程式設計。然而,對於大型專案的開發,你可能想需要在PHP中使用純的物件導向程式設計去聲明類,而且在你的專案開發只用物件和類別。隨著專案越來越大,使用物件導向程式設計可能會有幫助,物件導向程式碼很容易維護,容易理解和重複使用,這些就是軟體工程的基礎。在基於Web的專案中應用這些概念就成為網站未來成功的關鍵。
物件(Object)是問題域或實現域中某些事物的一個抽象,它反映此事物在系統中需要保存的資訊和發揮的作用;它是一組屬性和有權對這些屬性進行操作的一組服務的封裝體。 關於對像要從兩方面理解:一方面指系統所要處理的現實世界中的對象;另一方面對像是計算機不直接處理的對象,而是處理相應的計算機表示,這種計算機表示也稱為對象。簡單的來說,一個人就是一個對象,一個尺子也可以說是個對象。當這些物件可以用資料直接表示時,我們就稱他為屬性,尺子的度量單位可以是厘米,公尺或英尺,這個度量單位就是尺的屬性。
在PHP裡我們可以定義一個類,類(Class)就是指變數與一些使用這些變數的函數的集合。 PHP是一種鬆散類型的語言,所以透過型別重載不起作用,透過參數的個數不同來重載也不起作用。 有時在面向中重載建構函數非常好,這樣你可以透過不同的方法建立物件(傳遞不同數量的參數)。在PHP中就是透過類別來實現的。
在PHP中是透過類別來完成資訊封裝的,在PHP中定義類別的語法是:
class Class_name // 在物件導向程式設計類別中,習慣上類別的第一個字元為大寫,並且必須符合變數的命名規則。
{
//函數與變數的集合
}
?>
在定義類別時你可以按自已的喜好的格式定義,但最好能維持一種標準,這樣開發起來會更有效。
資料成員在類別中使用"var"宣告來定義,在給資料成員賦值之前,它們是沒有類型的。一個資料成員可以是一個整數,一個數組,一個相關數組(Associative Array)或者是一個物件。
以下是一個類別定義的實際例子:
class Student
{
var $str_Name; //姓名
var $str_Sex; ; //學號
var $int_English; //英文成績
var $int_maths; //數學成績
}
?>
這是一個很普通定義的簡單例子,用於顯示學生的學業成績,類別名為Student,Student類別包涵了一個學生的基本屬性:姓名、性別、學號、英語成績和數學成績。
function我們稱為在類別中被定義的函數,在函數中存取類別成員變數時,你應該使用$this->var_name,其中var_name指的是類別中被宣告的變量,否則對一個函數來說,它只能是局部變數。我們先定義一個Input()的函數,用來賦予實例中的物件以初始值:
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()」的函數,用來列印學生的基本狀況:
function ShowInfo() //定義ShowInfo ()函數
{
echo (「姓名:$this->str_Name
」);
echo (「性別:$this->str_Sex
echo (「性別:$this->str_Sex ;
echo (「學號:$this->int_Id
」);
echo (「英文成績:$this->int_English
」); echo (“數學成績:$this->int_Maths
”);
}
而定義好的類別則必須使用關鍵字來產生物件: =new Student;
例如我們要為一個名為$Wing的物件建立實例,並進行賦值,可以使用下面的程式碼:
$Wing =new Student; //用new關鍵字產生物件
$Wing ->Input (“Wing”,”男”,33,95,87);
//分別輸入Wing的姓名、性別、學號、英文成績、數學成績,其中姓名和性別是字元型變量,所以需要用雙引號,其它為數值型變數則不需要。
透過下面這段完整的原始碼,我們可以很清楚的看到類別在PHP是怎麼被運用的:
class Student
{
var $str_Name ;
var $str_Sex;
var $int_Id;
var $int_English;
var $int_maths; $Maths)
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id; int_English=$English;
$this->int_Maths=$Maths;
}
function ShowInfo()
{ >”);
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->Input (「paladin」,」女」,38,58,59.5);
$Wing->ShowInfo();
$Paladin->ShowInfo();
?>
執行結果應是這樣的:
姓名:Wing
性別:男
學號:33 姓名:Paladin
性別:女
學號:38
英文成績:58
數學成績:59.5
性別中的版本對物件導向程式設計的支援方面有了很大的改善,但支援的還不是很完整,不過現階段PHP對物件導向程式語言提供的支援不但有利於我們設計程式的結構,對於程式的維護也能提供很大的幫助。
全文出自 : cngnu
http://www.bkjia.com/PHPjc/314517.html
www.bkjia.com
true
http: //www.bkjia.com/PHPjc/314517.html
TechArticle
PHP 中的類別在闡述類別的概念之前我們來先說說物件導向程式設計的概念:物件導向的程式設計(Object-Oriented Programming,簡記為OOP)立意於創建軟體重...