- 相關(guān)推薦
PHP類(lèi)的使用實(shí)例講解
PHP 只有類(lèi)別 (class)、方法 (method)、屬性、以及單一繼承 (extensions) 等。對不習慣使用 C++、Java、Delphi 等面向對象語(yǔ)言來(lái)開(kāi)發(fā)程序的用戶(hù),不妨先閱讀一下有關(guān)面向對象概念的書(shū),相信可以帶來(lái)許多的收獲。
下面的范例是手推車(chē)睦?梢鑰吹劍使用 class 表示它是一個(gè)類(lèi)類(lèi)別。在類(lèi)別中的 function,例如 add_item 則表示該類(lèi)的一個(gè)方法。方法可以封裝類(lèi)的實(shí)際處理情形,讓該類(lèi)自己能依封裝好的方法來(lái)執行一些步驟。
程序中的 $this 類(lèi)變量也和 $GLOBALS 及 $php_errormsg 兩個(gè)變量一樣,在 PHP 中屬于特殊的變量。$this 變量只用在類(lèi)類(lèi)別中,表示類(lèi)的本身。
復制代碼 代碼如下:
<?php
// 程序名: cart.inc
class Cart {
var $items; // 手推車(chē)類(lèi)
// 本方法加入 $num 件物品到手推車(chē)中 (加到 $artnr 變量)
function add_item ($artnr, $num) {
$this->items[$artnr] += $num;
}
// 本方法從手推車(chē)減少 $num 件物品 (從 $artnr 變量減掉)
function remove_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
要使用手推車(chē)可以用類(lèi)似下例的方式?梢韵葘⒚總(gè)類(lèi)存成 Include 文件,再將它 require 或 include 進(jìn)來(lái)。在定義變量 $cart 時(shí),要使用 new 的保留字,表示 $cart 使用 Cart 類(lèi)。使用 -> 符號,表示執行類(lèi)的方法。
復制代碼 代碼如下:
<?php
require("cart.inc");
$cart = new Cart;
$cart->add_item("10", 1);
?>
之后再設計有記名的手推車(chē)。記名手推車(chē)從手推車(chē)遺傳下來(lái),因此手推車(chē)擁有的方法及屬性,記名手推車(chē)也有,而記名手推車(chē)比手推車(chē)增加了名字的方法 (或許該稱(chēng)屬性較恰當)。
從下例中可以看到,子類(lèi) Named_Cart 使用 extends 來(lái)繼承其父類(lèi) Cart。雖然 Named_Cart 類(lèi)中沒(méi)有增加物品及減少物品的方法,不過(guò)由于遺傳的特性,父類(lèi)有的東西它都有。
復制代碼 代碼如下:
<?php
// 程序名: named_cart.inc
require("cart.inc");
class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this->owner = $name;
}
}
?>
要使用記名手推車(chē)類(lèi),請看下面的范例。當然這不算太好的設計,每個(gè)子類(lèi)都一直 require 它的父類(lèi),會(huì )造成服務(wù)器在 I/O 上面的負擔。在實(shí)作時(shí),可以將整個(gè)系列的類(lèi)在同一個(gè)程序文件中,從最早的袓先類(lèi)到最后的子孫類(lèi),也方便日后修正。
復制代碼 代碼如下:
<?php
require("named_cart.inc");
$ncart = new Named_Cart; // 建立類(lèi)變量
$ncart->set_owner ("CyberRidder"); // 配置類(lèi)的記名屬性
echo $ncart->owner; // 顯示類(lèi)的記名屬性
$ncart->add_item ("10", 1); // 從父類(lèi)遺傳的方法也可使用
?>
因此,在 PHP 中使用了 extends 保留字,加上良好的系統分析與完整的 CRC 卡片 (詳見(jiàn)面向對象相關(guān)書(shū)籍) 設計之后,PHP 可變成擁有強大類(lèi)能力的 CGI 語(yǔ)言。
PHP 由于是腳本語(yǔ)言 (Script),因此程序源代碼可見(jiàn),在軟件工程中的元件黑箱并不會(huì )在目前的 PHP 版本中出現,也就是說(shuō),全部的類(lèi)其實(shí)沒(méi)有隱藏起它的內容。對于軟件業(yè)者而言,沒(méi)有辦法保護所謂的軟件 IC,站在開(kāi)放團體而言,反而有源代碼是件好事,至于孰是孰非,就很難判定了,不過(guò)目前 PHP 還是 Open Source 團體的一份子,或許日后 Zend 引擎可以做到類(lèi)封裝的功能也不一定。
【PHP類(lèi)的使用實(shí)例講解】相關(guān)文章:
PHP中curl的使用實(shí)例07-31
淺析php函數的實(shí)例06-08
PHP對象注入的實(shí)例分析08-27
實(shí)例講解托福閱讀推斷題技巧06-20
PHP中函數的使用說(shuō)明09-01
php在新浪云中使用imagick的方法07-14