PHP中類的理解和應用
2024-05-04 23:04:40
供稿:網友
許多php的愛好者在學習過程中感到對php中類的概念較難理解和掌握,雖然知道類既然存在就有其存在的道理,但是由于平時接觸和使用的機會較少,也就一略而過。其實,只要我們理解變量和函數這些php基本概念的話,掌握類的含義就不成問題。鑒于類在php的重要作用,本文將結合具體事例介紹php中類的概念和應用。
(一)
所謂類就是指由變量和作用于變量的函數組成的集合。類提供了一種對現實世界中事物的描述方式。通過有效的使用類,我們可以將描述同一對象的多個變量和函數組合在一起,作為一個整體使用,從而使編寫出來的程序更直觀,更合理,更易于維護。
舉一個比較通俗的例子,我們可以創建一個名為bike的類來描述現實生活中的一輛自行車。首先,我們設定該類中的變量包括踏板$pedals,鏈條$chain,前輪$front wheel,后輪$rear wheel,剎車$brakes, 以及手柄$handle。然后,我們創建停車stop(), 加速accelerate(), 左轉turnleft()和右轉turnright()等函數。這樣,我們就有了一個可以描述自行車這一對象所有行為和屬性的類。例如,我們可以將$front wheel 和$rear wheel變量傳入turnleft()函數,從而得到某種輸出結果。
也許有人會問上述例子雖然有趣,但是我們完全可以使用常規的變量和函數實現同樣功能,為什么一定要堅持使用這么煩瑣的類呢?當然,如果我們在腳本中只需要描述一輛自行車話,定義一個類似乎沒有什么特殊的價值。但是,如果當腳本需要涉及多輛自行車時呢?如果我們還是采用常規的為每量自行車都定義變量和函數的方法,那么光是跟蹤每個變量,確保正確的變量輸入正確的函數就是一項相當復雜的工作。相反,如果采用類的方式,就可以有效的減少所需變量的數量。此外,一個已經定義的類還可以被包含在其它文件或腳本中,從而實現代碼的重復利用。
(二)
對php類的概念有所了解之后,我們就來具體看一下如何在腳本中創建和使用類。
相信大家在創建站點時一定會因為要顧及頁面的顯示效果,字體的樣式和大小等細節而影響對整個頁面布局和整個站點流程的設計和構思。下面,我們就利用php的類來控制html的頁面輸出。
首先,我們使用如下代碼創建一個名為style的類,并在類中定義設置頁面屬性所需的變量:
<?php
class style {
var $text;
var $alink;
var $vlink;
var $link;
var $bgcol;
var $face;
var $size;
var $align;
var $valign;
}
?>
相信熟悉html語言的讀者一定不會對我們在style類中聲名的變量感到陌生。
下面,我們在style類中創建一個與類同名的函數。代碼如下:
<?php
class style {
function style ($text="#000000",$alink="#aa00aa",$vlink="#aa00aa",
$link="#3333ff",$bgcol="#999999",$face="arial",$size=3,
$align="center",$valign= "top")
{
$this->text=$text;
$this->alink=$alink;
$this->vlink=$vlink;
$this->link=$link;
$this->bgcol=$bgcol;
$this->face=$face;
$this->size=$size;
$this->align=$align;
$this->valign=$valign;
}
}
?>
說明:
在類中可以使用“$this”指代類本身,使用“->”運算符引用類中的各個變量或函數。類中創建的與類同名的函數稱為構造函數。構造函數在創建新的對象實例時自動執行,從而將類中設定的默認值賦予該對象實例。
php中,我們可以通過創建對象實例的方法使用一個已經定義的類。語法格式如下:
<?php $instance_name = new class; ?>
例如,本例中我們可以使用如下代碼創建一個名為$basic的對象實例,該對象實例將自動獲得style類中構造函數指定的默認值:
<?php $basic = new style; ?>
一個類可以創建多個對象實例,其中每個對象實例都繼承該類的默認屬性,可以調用類中的所有變量和函數。有時我們可能需要為由同一個類創建的多個對象實例設置不同的屬性,雖然我們可以在創建對象實例時修改類的默認值,但是這種方式一方面缺乏靈活性,另一方面按照php的約定,如果用戶在創建新的對象實例時聲明了某個變量值的話,則必須同時聲明該類中所聲明變量之后的所有變量。例如,如果我們在創建$basic對象實例時顯式修改了text變量值的話,則必須同時再聲明該類中位于text變量之后的所有變量,即style類的全部變量都需要再重新聲明一遍。顯然,我們需要使用其它更為便捷的方式修改對象實例中的某個變量值。這里,我們可以通過在style類中創建一個專門用于修改變量值的函數實現上述功能。具體代碼如下:
function set($varname,$value) {
$this->$varname=$value;
}
例如,如果我們需要將$basic對象實例中size變量的值改為2時,使用如下代碼即可實現:
<?php $basic->set( ‘size’, 2); ?>
說明:
->運算符用于向php解釋器說明運行$basic對象實例中的set()函數。
通過有效的使用set()函數,我們可以靈活的設置和控制不同的對象實例。比方說,如果我們希望為頁面輸出表格的標題行和內容行設置不同的背景顏色和字體大小的話,可以首先創建兩個對象實例,然后使用set()函數分別設置各自不同的屬性。具體代碼如下:
<?php
$tableheader= new style;
$tableheader->set( 'text', '#0000ff');
$tableheader->set( 'bgcol', '#000000');
?>
<?php
$tablecontent=new style;
$tablecontent->set( 'bgcol', '#aaaaaa');
$tablecontent->set( 'size',2);
?>
許多php的愛好者在學習過程中感到對php中類的概念較難理解和掌握,雖然知道類既然存在就有其存在的道理,但是由于平時接觸和使用的機會較少,也就一略而過。其實,只要我們理解變量和函數這些php基本概念的話,掌握類的含義就不成問題。鑒于類在php的重要作用,本文將結合具體事例介紹php中類的概念和應用。
(一)
所謂類就是指由變量和作用于變量的函數組成的集合。類提供了一種對現實世界中事物的描述方式。通過有效的使用類,我們可以將描述同一對象的多個變量和函數組合在一起,作為一個整體使用,從而使編寫出來的程序更直觀,更合理,更易于維護。
舉一個比較通俗的例子,我們可以創建一個名為bike的類來描述現實生活中的一輛自行車。首先,我們設定該類中的變量包括踏板$pedals,鏈條$chain,前輪$front wheel,后輪$rear wheel,剎車$brakes, 以及手柄$handle。然后,我們創建停車stop(), 加速accelerate(), 左轉turnleft()和右轉turnright()等函數。這樣,我們就有了一個可以描述自行車這一對象所有行為和屬性的類。例如,我們可以將$front wheel 和$rear wheel變量傳入turnleft()函數,從而得到某種輸出結果。
也許有人會問上述例子雖然有趣,但是我們完全可以使用常規的變量和函數實現同樣功能,為什么一定要堅持使用這么煩瑣的類呢?當然,如果我們在腳本中只需要描述一輛自行車話,定義一個類似乎沒有什么特殊的價值。但是,如果當腳本需要涉及多輛自行車時呢?如果我們還是采用常規的為每量自行車都定義變量和函數的方法,那么光是跟蹤每個變量,確保正確的變量輸入正確的函數就是一項相當復雜的工作。相反,如果采用類的方式,就可以有效的減少所需變量的數量。此外,一個已經定義的類還可以被包含在其它文件或腳本中,從而實現代碼的重復利用。
(二)
對php類的概念有所了解之后,我們就來具體看一下如何在腳本中創建和使用類。
相信大家在創建站點時一定會因為要顧及頁面的顯示效果,字體的樣式和大小等細節而影響對整個頁面布局和整個站點流程的設計和構思。下面,我們就利用php的類來控制html的頁面輸出。
首先,我們使用如下代碼創建一個名為style的類,并在類中定義設置頁面屬性所需的變量:
<?php
class style {
var $text;
var $alink;
var $vlink;
var $link;
var $bgcol;
var $face;
var $size;
var $align;
var $valign;
}
?>
相信熟悉html語言的讀者一定不會對我們在style類中聲名的變量感到陌生。
下面,我們在style類中創建一個與類同名的函數。代碼如下:
<?php
class style {
function style ($text="#000000",$alink="#aa00aa",$vlink="#aa00aa",
$link="#3333ff",$bgcol="#999999",$face="arial",$size=3,
$align="center",$valign= "top")
{
$this->text=$text;
$this->alink=$alink;
$this->vlink=$vlink;
$this->link=$link;
$this->bgcol=$bgcol;
$this->face=$face;
$this->size=$size;
$this->align=$align;
$this->valign=$valign;
}
}
?>
說明:
在類中可以使用“$this”指代類本身,使用“->”運算符引用類中的各個變量或函數。類中創建的與類同名的函數稱為構造函數。構造函數在創建新的對象實例時自動執行,從而將類中設定的默認值賦予該對象實例。
php中,我們可以通過創建對象實例的方法使用一個已經定義的類。語法格式如下:
<?php $instance_name = new class; ?>
例如,本例中我們可以使用如下代碼創建一個名為$basic的對象實例,該對象實例將自動獲得style類中構造函數指定的默認值:
<?php $basic = new style; ?>
一個類可以創建多個對象實例,其中每個對象實例都繼承該類的默認屬性,可以調用類中的所有變量和函數。有時我們可能需要為由同一個類創建的多個對象實例設置不同的屬性,雖然我們可以在創建對象實例時修改類的默認值,但是這種方式一方面缺乏靈活性,另一方面按照php的約定,如果用戶在創建新的對象實例時聲明了某個變量值的話,則必須同時聲明該類中所聲明變量之后的所有變量。例如,如果我們在創建$basic對象實例時顯式修改了text變量值的話,則必須同時再聲明該類中位于text變量之后的所有變量,即style類的全部變量都需要再重新聲明一遍。顯然,我們需要使用其它更為便捷的方式修改對象實例中的某個變量值。這里,我們可以通過在style類中創建一個專門用于修改變量值的函數實現上述功能。具體代碼如下:
function set($varname,$value) {
$this->$varname=$value;
}
例如,如果我們需要將$basic對象實例中size變量的值改為2時,使用如下代碼即可實現:
<?php $basic->set( ‘size’, 2); ?>
說明:
->運算符用于向php解釋器說明運行$basic對象實例中的set()函數。
通過有效的使用set()函數,我們可以靈活的設置和控制不同的對象實例。比方說,如果我們希望為頁面輸出表格的標題行和內容行設置不同的背景顏色和字體大小的話,可以首先創建兩個對象實例,然后使用set()函數分別設置各自不同的屬性。具體代碼如下:
<?php
$tableheader= new style;
$tableheader->set( 'text', '#0000ff');
$tableheader->set( 'bgcol', '#000000');
?>
<?php
$tablecontent=new style;
$tablecontent->set( 'bgcol', '#aaaaaa');
$tablecontent->set( 'size',2);
?>