類
類是變數與作用於這些變數的函式的集合。使用下面的語法定義一個類:
<?php
classCart{
var$items;//購物車中的物品
//將$num個$artnr物品加入購物車
functionadd_item($artnr,$num){
$this->items[$artnr]+=$num;
}
//將$num個$artnr物品從購物車中取出
functionremove_item($artnr,$num){
if($this->items[$artnr]>$num){
$this->items[$artnr]-=$num;
returntrue;
}elseif($this->items[$artnr]==$num){
unset($this->items[$artnr]);
returntrue;
}else{
returnfalse;
}
}
}
?>上面的例子定義了一個Cart類,這個類由購物車中的商品構成的數組和兩個用於從購物車中添加和刪除商品的函式組成。
<?php
classtest{
?>
<?php
functiontest(){
print'OK';
}
}
?>但是以下用法是可以的:
<?php
classtest{
functiontest(){
?>
<?php
print'OK';
}
}
?>在php4中,var變數的值只能初始化為常量。用非常量值初始化變數,需要一個初始化函式,該函式在對象被創建時自動被調用。這樣一個函式被稱之為構造函式(見下面)。
<?php
/*php4中不能這樣用*/
classCart{
var$todays_date=date("Y-m-d");
var$name=$firstname;
var$owner='Fred'.'Jones';
/*不過包含有常量的數組可以*/
var$items=array("VCR","TV");
}
/*應該這樣進行*/
classCart{
var$todays_date;
var$name;
var$owner;
var$items=array("VCR","TV");
functionCart(){
$this->todays_date=date("Y-m-d");
$this->name=$GLOBALS['firstname'];
/*etc...*/
}
}
?>類也是一種類型,就是說,它們是實際變數的藍圖。必須用new運算符來創建相應類型的變數。
<?php
$cart=newCart;
$cart->add_item("10",1);
$another_cart=newCart;
$another_cart->add_item("0815",3);
?>上述代碼創建了兩個Cart類的對象$cart和$another_cart,對象$cart的方法add_item()被調用時,添加了1件10號商品。對於對象$another_cart,3件0815號商品被添加到購物車中。
$cart和$another_cart都有方法add_item(),remove_item()和一個items變數。它們都是明顯的函式和變數。可以把它們當作檔案系統中的某些類似目錄的東西來考慮。在檔案系統中,可以擁有兩個不同的README.TXT檔案,只要不在相同的目錄中。正如從為了根目錄訪問每個檔案需要輸入該檔案的完整的路徑名一樣,必須指定需要調用的函式的完整名稱:在php術語中,根目錄將是全局名字空間,路徑名符號將是->。因而,名稱$cart->items和$another_cart->items命名了兩個不同的變數。注意變數名為$cart->items,不是$cart->$items,那是因為在php中一個變數名只有一個單獨的美元符號。
<?php
//正確,只有一個$
$cart->items=array("10"=>1);
//不正確,因為$cart->$items變成了$cart->""
$cart->$items=array("10"=>1);
//正確,但可能不是想要的結果:
//$cart->$myvar變成了$cart->items
$myvar='items';
$cart->$myvar=array("10"=>1);
?>在定義類的時候,無法得知將使什麼名字的對象來訪問:在編寫Cart類時,並不知道之後對象的名稱將會命名為$cart或者$another_cart。因而你不能在類中使用$cart->items。然而為了類定義的內部訪問自身的函式和變數,可以使用偽變數$this來達到這個目的。$this變數可以理解為“我自己的”或者“當前對象”。因而'$this->items[$artnr]+=$num'可以理解為“我自己的物品數組的$artnr計數器加$num”或者“在當前對象的物品數組的$artnr計數器加$num”。
注:偽變數$this通常未定義,如果其所在的方法是被靜態調用的話。但這不是個嚴格規定:如果一個方法被從另一個對象內靜態調用的話,則$this會被定義。此時$this的值是那個發出調用的對象。用下例演示:
<?php
classA
{
functionfoo()
{
if(isset($this)){
echo'$thisisdefined(';
echoget_class($this);
echo")/n";
}else{
echo"/$thisisnotdefined./n";
}
}
}
classB
{
functionbar()
{
A::foo();
}
}
$a=newA();
$a->foo();
A::foo();
$b=newB();
$b->bar();
B::bar();
?>上例將輸出:
$thisisdefined(a)$thisisnotdefined.$thisisdefined(b)$thisisnotdefined.
注:有一些不錯的函式用來處理類和對象。應該關注一下類/對象函式 。
相關詞條
-
PHP
PHP,外文名:PHP(Hypertext Preprocessor),中文名是超文本預處理器,一種通用開源腳本語言。語法吸收了C語言、Java和Per...
-
php類
php類,是計算機術語,PHP程式語言,是變數與作用於這些變數的函式的集合。
-
PHP[超文本預處理器]
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和...
發展 開發工具 特性 優勢 技術套用 -
PHP開發手冊
《PHP開發手冊》由孫鵬程編著,電子工業出版社編著,全面、系統地介紹了PHP實戰開發方方面面的技術。第1篇介紹PHP的檔案系統、程式調試、異常處理、表單...
內容提要 作者簡介 目錄 -
spl[標準PHP類庫]
spl,指SPL - Standard PHP Library 標準PHP類庫。
全面剖析 前景 PHP之旅 查看命令 -
php編輯器
PHPEclipse。 IDE。 PHPEdit。
什麼是 IDE? Eclipse Komodo PHP 設計器 PhpED -
史努比[PHP抓取採集類snoopy]
snoopy是一個php類,用來模仿web瀏覽器的功能,它能完成獲取網頁內容和傳送表單的任務。
-
php編程技術
PHP是一種易於學習和使用的伺服器端腳本語言。只需要很少的編程知識你就能使用PHP建立一個真正互動的WEB站點。 PHP是能讓你生成動態網頁的工具之一。...
技術簡介 先進之處 發展歷史 學習過程 亂碼解決 -
零基礎學PHP
《零基礎學PHP》是2008年3月1日機械工業出版出版的圖書,作者是馬忠超。
2008年機械工業出版社出版圖書 2012年機械工業出版社出版圖書