對象(Object)是問題域或實現域中某些事物的壹個抽象,它反映此事物在系統中需要保存的信息和發揮的作用;它是壹組屬性和有權對這些屬性進行操作的壹組服務的封裝體。 關於對象要從兩方面理解:壹方面指系統所要處理的現實世界中的對象;另壹方面對象是計算機不直接處理的對象,而是處理相應的計算機表示,這種計算機表示也稱為對象。簡單的來說,壹個人就是壹個對象,壹個尺子也可以說是個對象。當這些對象可以用數據直接表示時,我們就稱他為屬性,尺子的度量單位可以是厘米,公尺或英尺,這個度量單位就是尺子的屬性。
在PHP裏我們可以定義壹個類,類(Class)就是指變量與壹些使用這些變量的函數的集合。PHP是壹種松散類型的語言,所以通過類型重載不起作用,通過參數的個數不同來重載也不起作用。 有時在面向中重載構造函數非常好,這樣妳可以通過不同的方法創建對象(傳遞不同數量的參數)。在PHP中就是通過類來實現的。
在PHP中是通過類來完成信息封裝的,在PHP中定義類的語法是:
<?php
class Class_name // 在面向對象編程類中,習慣上類的第壹個字符為大寫,並且必須符合變量的命名規則。
{
//函數與變量的集合
}
>在定義類時妳可以按自已的喜好的格式進行定義,但最好能保持壹種標準,這樣開發起來會更有效些。
數據成員在類中使用"var"聲明來定義,在給數據成員賦值之前,它們是沒有類型的。壹個數據成員可以是壹個整數,壹個數組,壹個相關數組(Associative Array)或者是壹個對象。
下面是壹個類定義的實際例子:
<?php
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()的函數,用來給實例中的對象賦以初值:
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<br>
”);
echo (“性別:$this->str_Sex <br>
”);
echo (“學號:$this->int_Id <br>
”);
echo (“英語成績:$this->int_English <br>
”);
echo (“數學成績:$this->int_Maths <br>
”);
}
而定義好的類則必須使用new關鍵詞來生成對象:
$A_student=new Student;
例如我們要為壹個名為$Wing的對象創建實例,並進行賦值,可以使用下面的代碼:
$Wing =new Student; //用new關鍵詞來生成對象
$Wing ->Input (“Wing”,”男”,33,95,87);
//分別輸入Wing的姓名、性別、學號、英語成績、數學成績,其中姓名和性別是字符型變量,所以需要用雙引號,其它為數值型變量則不需要。
通過下面這段完整的源代碼,我們就可以很清楚的看到類在PHP是怎麽被運用的:
<?php
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<br>
”);
echo (“性別:$this->str_Sex <br>
”);
echo (“學號:$this->int_Id <br>
”);
echo (“英語成績:$this->int_English <br>
”);
echo (“數學成績:$this->int_Maths <br>
”);
}
}
$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對面向對象編程語言提供的支持不但有利於我們設計程序的結構,對於對程序的維護也能提供很大的幫助。