在闡述類的概念之前我們來先說說物件導向程式設計的概念:物件導向的程式設計(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_***; //性別
var $int_id; //學號
var $int_english; //英語成績
var $int_maths; //數學成績
這是乙個很普通定義類的簡單例子,用於顯示學生的學習成績,類名為student,student類包涵了乙個學生的基本屬性:姓名、性別、學號、英語成績和數學成績。
function我們稱之為在類中被定義的函式,在函式中訪問類成員變數時,你應該使用$this->var_name,其中var_name指的是類中被宣告的變數,否則對乙個函式來說,它只能是區域性變數。 我們先定義乙個input()的函式,用來給例項中的物件賦以初值:
function input ( $name, $***, $id, $englis, $maths)
$this->str_name=$name;
$this->str_*** =$***;
$this->int_id =$id;
$this->int_englis=$english;
$this->int_maths=$maths;
現在我們再定義乙個叫「showinfo()」的函式,用於列印學生的基本情況:
function showinfo() //定義showinfo()函式
echo (「姓名:$this->str_name
echo (「性別:$this->str_***
echo (「學號:$this->int_id
echo (「英語成績:$this->int_english
echo (「數學成績:$this->int_maths
$a_student=new student;
例如我們要為乙個名為$wing的物件建立例項,並進行賦值,可以使用下面的**:
$wing ->input (「wing」,」男」,33,95,87);
//分別輸入wing的姓名、性別、學號、英語成績、數學成績,其中姓名和性別是字元型變數,所以需要用雙引號,其它為數值型變數則不需要。
通過下面這段完整的源**,我們就可以很清楚的看到類在php是怎麼被運用的:
class student
var $str_name;
var $str_***;
var $int_id;
var $int_english;
var $int_maths;
function input ( $name, $***, $id, $english, $maths)
$this->str_name=$name;
$this->str_*** =$***;
$this->int_id =$id;
$this->int_english=$english;
$this->int_maths=$maths;
function showinfo()
echo (「姓名:$this->str_name
echo (「性別:$this->str_***
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對物件導向程式設計語言提供的支援不但有利於我們設計程式的結構,對於對程式的維護也能提供很大的幫助。
php定義乙個學生類 PHP中的類 什麼叫類
在闡述類的概念之前我們來先說說物件導向程式設計的概念 物件導向的程式設計 object oriented programming,簡記為oop 立意於建立軟體重用 具備更好地模擬現實世界環境的能力,這使它被公認為是自上而下程式設計的優勝者。它通過給程式中加入擴充套件語句,把函式 封裝 進程式設計所必...
PHP擴充套件中定義乙個類
類的結構體定義 struct zend class entry zend minit function sample3 通過展開巨集,我發現,在執行完init class entry後,其實zend class entry結構,只初始化了三個成員,name,name length,builtin f...
php宣告乙個方法,php如何定義乙個函式
函式是完成乙個特定功能的 集合,可以分為系統函式和使用者函式。使用者可以通過建立自定義函式實現特定需要。1.函式定義語法結構 php中允許使用者使用function關鍵字建立乙個自定義函式。語法結構 function 函式名稱 引數1,引數2,函式內的 php對函式名稱的限制比較少,可以是以字母或下...